xLua學習筆記_使用xlua.hotfix()方法修改C#程式碼
阿新 • • 發佈:2020-07-09
示例程式碼:
在要修改的類上打上 [HotFix] 標籤,要修改的方法上打上 [LuaCallCSharp ] (如果Lua程式碼中會呼叫到CSharp中的程式碼的話)
1 [Hotfix] 2 public class MyClass 3 { 4 [LuaCallCSharp] 5 public int MyFunction() 6 { 7 return 1; 8 } 9 }
使用 xlua.hotfix() 注入更新這個方法:
此處為方便演示,真實情況應為從伺服器獲得Lua檔案或其他操作。
1 public class HotFix 2 { 3 public void hotFix() 4 { 5 LuaEnv le = new LuaEnv(); 6 le.DoString(@" 7 xlua.hotfix(CS.MyClass,'MyFunction', 8 function(self) 9 return 666 10 end) 11 "); 12 }13 }
對xlua.hotfix() 函式引數說明,引用一段官方解釋:
xlua.hotfix(class, [method_name], fix)
- 描述 : 注入lua補丁
- class : C#類,兩種表示方法,CS.Namespace.TypeName或者字串方式"Namespace.TypeName",字串格式和C#的Type.GetType要求一致,如果是內嵌型別(Nested Type)是非Public型別的話,只能用字串方式表示"Namespace.TypeName+NestedTypeName";
- method_name : 方法名,可選;
- fix : 如果傳了method_name,fix將會是一個function,否則通過table提供一組函式。
table的組織按key是method_name,value是function的方式。
執行結果:
佔位