Project1
标题:
关于脚本中有多个Main……
[打印本页]
作者:
喵呜喵5
时间:
2014-2-22 14:02
标题:
关于脚本中有多个Main……
本帖最后由 喵呜喵5 于 2014-2-23 15:41 编辑
未命名.PNG
(3.18 KB, 下载次数: 20)
下载附件
保存到相册
2014-2-22 14:02 上传
脚本中有多个Main的时候在游戏中选择退出游戏后不会退出游戏而是进入下一个main同时读取下一个main以上的脚本开始新游戏
求教以这种方式开始的新游戏是否会有什么BUG
作者:
taroxd
时间:
2014-2-22 14:32
我猜没有……应该……
不过我退出游戏一般是按右上角的红叉叉
作者:
tan12345
时间:
2014-2-22 20:04
按程序执行的顺序看,没有,游戏首先找到第一个main,执行,退出游戏并不是结束程序,而是rgss_main { SceneManager.run }执行结束而已,你将一段代码放在main下面,代表退出游戏后继续执行下一段代码而已,如果后面没有代码了,那程序执行结束;如果后面还有代码,那就接着执行后续代码。
作者:
余烬之中
时间:
2014-2-23 15:31
标题:
不会
本帖最后由 余烬之中 于 2014-2-23 15:34 编辑
不会
可以知道这个…………rgss_main { SceneManager.run }
在SceneManager.run中 会首先调用到 DataManager.init 然后进行他自己的功能(场景的管理,主要就只有压栈退栈建背景……)
DataManager.init可以顾名思义 也就是初始化数据 这时会重新读取数据库并建立各种游戏对象
a = Class.new
# 对 a 的操作
a = Class.new
显然原来的a已经被抛弃了 GC会负责收集的
(可以考虑在第二个main前加一句GC.start清理垃圾信息)
重建后SceneManager就会这样:
@Scene
= first_scene_class.new
@scene.main while @scene
于是是全新的游戏
当然 需要注意一点 按下F12可以重置rgss_main 所以
rgss_main { p 1; SceneManager.run }
rgss_main { p 2; SceneManager.run }
第一次游戏中1 退出后 第二次游戏中2 如果两个main不一样(一个真实一个彩蛋),那么F12并不能返回到第一个
当然这不算是bug 因为F1里已经说明了……
中间的代码可以新增定义 然后进入游戏后触发不一样的东西 这样两个rgss_main就是一样的 完全不用考虑F12(因为就算考虑了也没什么问题嘛)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1