$prev_scene = nil
def main_update_loop
if $scene != nil
if $scene != $prev_scene
if $prev_scene != nil
$prev_scene.dispose
end
$scene.main
$prev_scene = $scene
end
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
$scene.update
else
raise "END"
end
end
在rgss脚本,main模块中,移除如下代码:
while $scene != nil
$scene.main
end
此外,每一个场景(scene)里面,都会有一个循环更新的代码模块:
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
我们将这段模块移除,直接用end结尾,剩余部分再定义成另一个函数,给main_update_loop调用,
其模板如下所示:
class Scene_XXX
...
def main
...
Graphics.transition
# 这里的loop语句块被直接移除,并使用end结尾
end
# 余下代码,重新定义成dispose函数
def dispose
Graphics.freeze
...
end
def update
...
end
end
最后是关于存储问题,由于浏览器不能直接访问计算机的文件,我们将游戏的记录保存再浏览器的缓存中,由于上面说到,浏览器的事件处理都是异步的,所以我们还需要再存储文件的地方加一段这样的代码:
class Scene_Save < Scene_File
...