一键重启游戏
修改于05/30117 浏览开发心得
一、
看到好像好多人需要重启这个功能,但是一直没人愿意说,我这里就直接告诉大家了。
其实实现游戏重启的代码非常简单,就是一行代码:
SendEvent("RequestRestartGame", VariantMap())
二、
你可以对嗒啦啦这样说,就能实现 游戏重启按钮:
"
当按钮【重启游戏】点击后,要执行代码 SendEvent("RequestRestartGame", VariantMap())
"
三、
来看看实际的效果视频

(可以看到,点击就立即重启,丝毫没有等待)
四、
如果你有兴趣,那可以继续看看下面详细的解释。
SendEvent("RequestRestartGame", VariantMap()) 是 UrhoX 引擎提供的一个进程级游戏重启事件——发送后,引擎会重置整个 Lua 虚拟机,从 Start() 重新执行,等效于重新启动应用,但进程不退出。
关键点:
1.所有 Lua 变量、全局状态、场景节点全部清空。
2.不会自动保存任何状态——需要持久化的数据
必须在调用前写入磁盘。
3.引擎进程本身不退出,对用户而言只是"闪一下"然后从头开始。
重启功能来源:
urhox-libs/Engine/i18n.lua:755。这会触发引擎运行时重启整个进程,仅用于 i18n 语言切换需要重载所有资源的场景,不适合普通游戏重启。
五、
有哪些适用场景:
1.切换语言后需要重载所有资源【适用,官方推荐用途】
2.硬重置游戏到出厂状态 【适用】
3.关卡重试 / 死亡重来 【不适用】(太重,用 Lua 状态重置就行了,没必要直接重启游戏)
4.更新代码后重载 【可能适用,但需验证,因为官方没说】
比如老玩家是旧版本,就可以通过这个功能实现强制旧版本重启。
版本检查,记得一定要用 多人模式+ 云变量 实现,这样才足够靠谱。


