unity xlua 熱更新修復
阿新 • • 發佈:2020-12-10
技術標籤:xlua
xLua熱補丁技術支援在執行時把一個C#實現(函式,操作符,屬性,事件,或者整個類)替換成Lua實現,意味著你可以:
- 平時用C#開發;
- 執行也是C#,效能秒殺Lua;
- 有bug的地方下發個Lua指令碼fix了,下次整體更新時可以把Lua的實現換回正確的C#實現,更新時甚至可以做到不重啟遊戲; 這個新特性iOS,Android,Window,Mac都測試通過了,目前在做一些易用性優化
本文主要配置流程
第一步、下載 xluahttps://github.com/Tencent/xLua
第二步、將下載的xlua中tool、xlua、Plugins拷貝到自己的專案。
第三步、如下圖依次執行,切記操作不能過快,每操作完一步要等unity右下角轉圈圈完成,再進行下一步。
、
第四步、配置build setting 巨集,如下圖
第五步、編寫 XluaManger主要是lua虛擬機器的建立、執行和銷燬
public class XLuaManager : MonoBehaviour { private LuaEnv luaEnv; void Awake() { luaEnv = new LuaEnv(); luaEnv.AddLoader(LuaLoader); // LuaDoString("DemoFixed.lua"); } public void LuaDoString(string chunk) { luaEnv.DoString(string.Format("require '{0}'", chunk)); } byte[] LuaLoader(ref string filePath) { string absPath = Application.streamingAssetsPath + "/" + filePath + ".txt"; return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath)); } // Update is called once per frame void Update() { if (luaEnv != null) luaEnv.Tick(); } private void OnDestroy() { if (luaEnv != null) { luaEnv.GC(); luaEnv.Dispose(); } } }
第六步、配置可更新的類
第七步、編寫lua程式碼除錯