開源手遊熱更係統xLua最新2.1.6版是Unity3D下Lua編程解決方案,自2016年初推廣以來,已經應用於十多款騰訊自研遊戲,因其良好性能、易用性、擴展性而廣受好評。現在,騰訊已經將xLua開源到GitHub。
Unity 下 Lua 編程支持
xLua 為 Unity 增加 Lua 腳本編程的能力,進而提供代碼邏輯增量更新的可能。當然不僅僅如此,在 coco2dx 上的實踐告訴我們,以 Lua 為主打語言的遊戲客戶端編程是可行的。
C# 下 Lua 編程支持
xLua 也支持非 Unity 下的 C# 環境使用,通用版本的介紹請看這裏。
xLua 的突破
xLua 在功能、性能、易用性都有不少突破,這幾方麵分別最具代表性的是:
Unity 全平台熱補丁技術,可以運行時把 C# 實現(方法,操作符,屬性,事件,構造函數,析構函數,支持泛化)替換成 lua 實現;
自定義 struct,枚舉在 Lua 和 C# 間傳遞無 C# gc alloc;
編輯器下無需生成代碼,開發更輕量;
新增特性
1、帶約束的泛型支持(by forsakenyang);
2、非 Unity 的 .net 環境支持;
3、代碼注入支持小工具方式,該方式不用拷貝 cecil 庫,可以解決拷錯 cecil 庫版本或者和 Unity,VS 插件衝突的問題;
4、Hotfix 配置支持字段和屬性
5、更方便的 Unity 協程 hotfix
6、在 hotfix 觸發事件;
7、LuaTable 添加 ForEach 方法以及 Length 屬性;
8、cmake 生成項目優化:保留源文件目錄結構;
9、對已經 Dispose 的 LuaEnv 的訪問做保護;Dispose 時檢查 callback 是否已經都釋放,沒釋放的話報錯;
10、支持釋放 Hotfix 回調;
變更
1、構造函數改為執行原有邏輯後調用 lua;
2、對 string 類型的[]操作符重載會影響到繼承調用,去掉該特性的支持;
3、編輯器下的代碼注入改為手動方式;
bug 修複
1、防止定義了同時定義 get_xx 方法以及xx屬性的生成代碼的重名。
2、struct 注入代碼無效;
3、Utils 加名字空間,防止和業務衝突;
4、返回定長多維數組的 delegate ,生成代碼可能會衝突;
5、interface ,以及編輯器下不生成代碼情況下,對可變參數的展開;
6、il2cpp 下,如果不生成代碼,會報 ManifestModule 不支持;
7、規避 Unity4 的 bug:訪問一個已經被 Distroy 的 UnityEngine.Object ,編輯器下會崩潰,這個問題在 Unity5,或者 luajit 版本都不會出現;
8、修改上個版本引入的問題:xlua_setglobal 會漏一個值在棧上,這會導致一些32位應用不穩定;
9、當 delegate 參數隻有 ref 和 out 的區別的話,報重載衝突。
140.5M / 09-05
76.4M / 03-25
55M / 06-05
237.9M / 04-13
900.9M / 03-02
96.2M / 07-06
311.2M / 07-06
335M / 07-06
200M / 07-06
413.8M / 07-06
484.7M / 09-27
165.4M / 09-05
353.9M / 06-05
131.8M / 04-13
195.6M / 03-03
45.6M / 09-08
665.2M / 07-06
2.84G / 07-06
93M / 07-06
338.3M / 07-06
1.38G / 07-26
488.3M / 07-16
109.8M / 06-03
142M / 01-08
1.2M / 11-23
548.8M / 04-13
1.6M / 04-13
1.48G / 03-18
646.6M / 03-03
133.7M / 03-03
110.5M / 09-05
33.4M / 09-05
325.8M / 08-12
60M / 04-29
254M / 04-25
659M / 04-23
1M / 12-26
253.4M / 12-08
253M / 12-08
1.19G / 11-16
369M / 09-22
181.5M / 09-22
201.2M / 09-05
488.3M / 07-16
248.9M / 12-08
248.9M / 12-08
100.6M / 03-06
148.9M / 03-06
1.12G / 07-06
1.25G / 07-06
1.76G / 09-22
1.92G / 04-17
116.2M / 04-10
201.5M / 04-13
7.31G / 07-01
94.3M / 07-06
2.48G / 07-06
7.63G / 07-06
1M / 07-06
778.1M / 07-06
561.8M / 07-11
72M / 07-06
548.7M / 07-06
1.00G / 07-06
9.13G / 07-06
126.2M / 07-06
72M / 07-06
105.1M / 07-06
132M / 07-06
132M / 07-06