赞 | 406 |
VIP | 0 |
好人卡 | 11 |
积分 | 390 |
经验 | 242285 |
最后登录 | 2024-11-28 |
在线时间 | 5722 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 39028
- 在线时间
- 5722 小时
- 注册时间
- 2006-11-10
- 帖子
- 6621
|
本帖最后由 灯笼菜刀王 于 2020-8-1 22:34 编辑
脚本和事件执行情况不太一样的哦
事件是有index逐条运行的, 而脚本是一瞬间执行全部可执行的内容的。
而各种即时判定,主动等待等,都是通过循环执行某段脚本(通常就是update的方法)来达到的
所以你的写法有根本上的逻辑错误
scene battle的脚本运行原理你应该知道吧, 它是通过 @phase 来分歧各个阶段的循环, 我把这种通过某个变量控制每个阶段进行不同的循环过程叫做"流程"
而 phase4 还有自己的小流程, 是通过 @phase4_step 来分歧的
update具体是怎么工作的呢?
战斗开始的时候, 在main的主循环loop do之前,调用了start_phase1, 这个方法把 @phase = 1 , 看scene battle1 的updete, 可以发现通过 @phase的分歧,这个时候是开始循环 update_phase1 的内容, update_phase1 很简单, 就是判断是否达成胜负条件, 达成后中断处理,进入胜负处理环节, 没达成的话, 就调用 start_phase2
然后start_phase2这个方法, 把@phase = 2, 这样就开始循环 update_phase2 的方法, 同时 start_phase2 还打开了战斗/逃跑窗口, 而 update_phase2 里,把跳到别的阶段的方法放在按键分歧里, 这个时候,因为@phase == 2, 所以它是一直被循环执行的, 但是没有按键的话,就会一直不满足跳出条件,从而在这个阶段持续循环
当玩家按下C键,满足了条件,根据@party_command_window的index分支,调用start_phase3或者update_phase2_escape, 这个时候就进入了新的循环("流程前进")
好了,原理说完, 如果能理解的话, 可以在scene battle里搜索 @help_window.set_text 这句, 这句是显示HELP窗口,并刷新设置的文字, 然后搜索 @help_window.visible = false 这句是隐藏HELP窗口, 思考下,HELP窗口是怎么做到"自动出现,自动消失, 而且不会一闪而过让人家看不清楚"
最后,回到主题, 你想要的效果, 1就是"战斗/逃跑"的方法, 2就是HELP窗口的方法, 试试吧
--------
PS: 其实用战斗事件也可以做到你要的效果,而且不用改动默认流程, 更绿色的哦, 笑
|
评分
-
查看全部评分
|