Project1

标题: 请问:一个战斗场景中的问题 [打印本页]

作者: kvkv97    时间: 2021-11-16 13:40
标题: 请问:一个战斗场景中的问题
在Scene_Battle 1中的方法update中,有下面一段程序
    # 显示效果中的情况下
    if @spriteset.effect?
      return
    end
请问:在执行过程中,如果whiten了,那么执行return,不是结束方法update了吗,为什么还能继续刷新?
作者: guoxiaomi    时间: 2021-11-16 13:54
因为update在场景变换前会循环调用,看一下main方法
作者: ppspssss    时间: 2021-11-16 18:35
本帖最后由 ppspssss 于 2021-11-16 19:34 编辑

    guoxiaomi (加菲猫)他说的




loop do
省略号
end
loop do是循环的一种, 该个循环会不停地运行直至break(中断)

update本身不会自己循环, 是loop do 无限循环当中的update 每帧运行一次, 比如我就分类多个update, 方便日后管理和维护,


比如在腳本Scene_Battle 1 里 是update里多个支线update (套娃)

图中, loop do只要不中断, 就会一直运行里边的东西,  update1,update2,update3 如果任一返回都不会对循环造成任何影响, 若我对其中如update3返回false , 就会中断此循环并且跳出循环 ,运行loop do的end以下代码


仅供参考 仅个人理解
作者: Im剑侠客    时间: 2021-11-16 19:52
本帖最后由 Im剑侠客 于 2021-11-16 20:19 编辑

标明“def update”在当前场景就是一直循环的,其他在update命名后加数字或其他的,没有默认的循环刷新属性。
继续刷新本身不需要担心过度消耗CPU啥的,因为有条件存在,条件符合时return基本上算力消耗极低。

--------------

更新了一下认识,“def update”只是个人使用习惯的命名方式,不存在默认的属性,main里边对应的update完全可以改成各种名字。
回头打开工程看了看,特此更正一下。
作者: guoxiaomi    时间: 2021-11-17 23:39
ppspssss 发表于 2021-11-16 18:35
guoxiaomi (加菲猫)他说的

update的提前返回只会跳过update后面的内容,不会跳过其他的update




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1