Unity 中使用 Lua 的优劣简要分析

Unity 中使用 Lua 的优劣

优点:热更新

程度判定:这是 Lua 的一个重要优点。

Lua 主要好处就是可以热更新,因为让玩家更新一个整包的代价非常大,除了王者荣耀这样霸气的游戏,几乎没有哪个中小厂商的游戏能承受因更新整包导致的玩家流失1。另外,当出现紧急线上 bug 时,热更新能保证问题及时修复,相比之下通过iOS或者安卓商店重新提包这个流程上就不知慢多少了。

缺点:执行效率较低

程度判定:问题不大。通常性能问题不出在使用了 Lua 上,而是渲染、加载、逻辑等方面有性能问题。

Unity中使用Lua,一个问题是Lua作为脚本语言本身执行的效率较低,另外还由宿主语言C#来调用,这个过程进一步降低了效率。所以游戏开发前要有规划,一般来说执行频繁、改动少、性能影响大的逻辑(如地图中人物移动、摇杆操作)适合放在C#中,反之则适合放在Lua中。当然有的模块不是那么好判断,需要自己斟酌,如战斗技能这块,按道理来说会经常改动,适合放在lua中,但是据说王者荣耀为了性能考虑是放在C#中。

缺点:开发效率不如 C

程度判定:问题不大。好的 IDE 基本上 OK。

Unity使用 Lua 的另一个问题是开发效率不如 C#。C# 作为强类型语言和 Unity 官方的脚本语言,有 VS 这样方便的开发工具,错误检查和代码补全功能也非常完善。Lua 作为动态脚本语言,缺少类型声明,无论是阅读别人代码还是出错调试都不容易。断点调试也比较困难,独立的 Lua 还可以打断点正常调试,在项目中的 Lua 脚本一般只能用 print 去输出调试信息了。

参考

  1. Unity中集成Lua初探