示例代码:
在要修改的类上打上 [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的方式。
执行结果:
占位