仿照XLua的官方例子,我们做一个XLua的热更新 1.按照hotfix.md的使用说明
1、添加HOTFIX_ENABLE宏打开该特性(在Unity3D的File->Build Setting->Scripting Define Symbols下添加)。编辑器、各手机平台这个宏要分别设置!如果是自动化打包,要注意在代码里头用API设置的宏是不生效的,需要在编辑器设置。 (建议平时开发业务代码不打开HOTFIX_ENABLE,只在build手机版本或者要在编译器下开发补丁时打开HOTFIX_ENABLE) 2、执行XLua/Generate Code菜单。 3、注入,构建手机包这个步骤会在构建时自动进行,编辑器下开发补丁需要手动执行"XLua/Hotfix Inject In Editor"菜单。注入成功会打印“hotfix inject finish!”或者“had injected!”。
2.内嵌模式
默认通过小工具执行代码注入,也可以采用内嵌到编辑器的方式,定义INJECT_WITHOUT_TOOL宏即可。
3.代码实例 在C#代码中我们要将热更新的类添加特性[Hotfix] 这里我们要更改一个Update方法通过XLua的Hotfix
代码语言:javascript复制[Hotfix]
public class CSHotFix : MonoBehaviour {
void Start () {
LuaManager.Instance.luaEnv.DoString("require 'MyHotFix'", "MyHotFix.lua.txt");
}
void Update () {
if (Input.GetMouseButtonDown(1))
{
print("right mouse put");
}
}
}
在Lua代码中,使用xlua.hotfix方法传入要修改的类,被修改的方法,新的方法。这样在程序运行的时候,就会执行Lua的代码了
代码语言:javascript复制xlua.hotfix(CS.CSHotFix,"Update",function ()
if CS.UnityEngine.Input.GetMouseButtonDown(1) then
local obj = CS.UnityEngine.GameObject.CreatePrimitive(CS.UnityEngine.PrimitiveType.Sphere)
obj.name = "made in Lua";
end
end)
4.一个类的私有属性可以访问要在Lua中添加
代码语言:javascript复制xlua.private_accessible(CS.CSHotFix);