xLua 2.1.13 釋出,騰訊開源的手遊熱更新解決方案
新增特性
新增AdaptByDelegate注入模式;
新增xlua.get_generic_method,用於呼叫泛型函式;
支援類似CS.System.Collections.Generic.List(CS.System.Int32)的泛型寫法;
注入新選項:忽略編譯器自動生成程式碼,以及不生成base代理;
針對lua程式設計以及熱補丁,均新增直接可用的自動化配置樣例;
新增luajit的gc64支援;
加入相容位元組碼(一份位元組碼支援32位和64位系統)的支援;
內建新lua記憶體洩漏檢測工具;
delegate橋接動態例項化:delegate是4個引數以內,引數均引用型別,無返回值或者返回引用型別,不用配置CSharpCallLua也能呼叫lua函式;
提供util.print_func_ref_by_csharp函式,用於檢視當前被C#引用的lua函式;
支援無CS全域性變數的工作方式;
變更
虛擬機器升級:lua5.3.4 -> lua5.3.5,luajit2.1b2 -> luajit2.1b3;
delegate bridge程式碼段佔用優化;
改為PostProcessBuild事件檢查是否生成程式碼;
適配xcode 10:osx平臺不再支援32bit版本構建;
名字空間、類名拼寫錯誤時,對靜態成員的設定會報錯;
防止CS全域性table被刪除導致xlua工作異常;
Windows下構建lib,若使用vs 2015引數執行cmake失敗,則繼續嘗試使用vs 2017;
編輯器下不生成程式碼時,也檢查Blacklist,維持和執行時一致;
bug修復
泛型的陣列生成程式碼報錯;
防止對TypeExtensions配置了LuaCallCSharp後,lua裡頭IsValueType之類的判斷永真;
生成程式碼過濾掉含指標的函式和欄位;
適應索引器屬性名不是Item的情況;
解決attribute初始化異常會導致生成程式碼,注入終止的問題;
精簡模式下空Enum生成程式碼錯誤;
通過把初始化函式分割成小函式,規避unity在android下執行大函式crash的bug;
Assignable處理obj為null情況;
內嵌類不Obsolete,但外層類Obsolete的生成程式碼報錯
解決inline注入方式下,如果lua邏輯跑異常,看不到異常資訊的問題;
修復xlua.private_accessible訪問後,同名public的方法無法訪問的Bug;
[Out]修飾的引數不應該生成out關鍵字;
通過反射查詢合適的介面卡時,有可能訪問到非介面卡函式;
精簡模式匯出程式碼無get_Item、set_Item;
IntKey方式下不自動xlua.private_accessible的問題;
下載地址: