RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 107|回复: 2

[已解决] 一个关于死循环的问题

[复制链接]
发表于 2018-8-23 08:31:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 zc81410 于 2018-8-24 09:52 编辑

想做一个解密游戏使用的交互系统,通过show screen XXX来开启制作好的系统,但使用show语句开启场景系统时程序是一种往下走的,没有对话就结束了,需要通过死循环来卡住程序不让它继续运行。

目前已知可以通过:
label start:
    show screen XXX
    while True:
        pause 0.3
    return

我这样实现的死循环理论上可以实现卡住程序的功能,不过实际调试时会发现连续点击场景screen XXX的非按钮区域会发生程序卡死现象(未响应),但是连续点击场景screen XXX的按钮没有问题,尝试使用jump来实现死循环:
label start:
    show screen XXX
    jump loop

label loop:
    pause 0.3
    jump loop

也还是会出现同样的问题,目前解决方法是通过制作一个和屏幕一个一样大的大按钮来保证鼠标左键点击的都是场景按钮区域,来避免未响应,不知道有没有人帮忙看看为什么这种死循环会出现这种问题
发表于 2018-8-24 07:01:36 | 显示全部楼层
转自——《雪凡與好朋友們的 Ren'Py 遊戲引擎初學心得提示》第九回:變數管理與 Screen 系統

[RenPy] 纯文本查看 复制代码
【阻塞与非阻塞】

用 show screen 呼唤出来的 Screen,是不会「阻塞」游戏正常进行的。

这个意思是说,screen 只是显示在萤幕上面,您继续点滑鼠,故事还是能往下推进,screen 的存在并不会拦截正常游戏脚本流程。

如果您就是需要一个阻塞效果,让screen 拦在玩家面前说:「等等!你得先把我搞定才能继续去做别的,否则此路不通。」则您必须用call screen 语句来取代show screen语句。如下:

call screen 名称

您大可修改前述的爆炸范例来试试效果。

注意,您只能透过在 screen 中加入两种 action:"Jump" 和 "Return" 来让玩家能脱离阻塞状态。比方说:

screen some_screen:
    textbuttom "脱离阻塞" action Return() at truecenter

label start:
    call screen some_screen

    "您必须脱离阻塞才能看到这一行。换句话说,您刚刚按过那个按钮,执行过 action Return 了。"

当这两种 action 的其中之一被运行时,故事才能继续进行下去。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-24 09:51:33 | 显示全部楼层
龙氏 发表于 2018-8-24 07:01
转自——《雪凡與好朋友們的 Ren'Py 遊戲引擎初學心得提示》第九回:變數管理與 Screen 系統

[mw_shl_code ...

多谢~已经解决了~换成$ renpy.pause(0.1, hard = True)就没有未响应问题了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 | 苏公网安备 32092302000068号 )

GMT+8, 2018-11-20 01:28 , Processed in 0.029354 second(s), 20 queries , File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表