Unity 中使用 Lua 的優劣簡要分析
阿新 • • 發佈:2018-11-02
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 去輸出除錯資訊了。