Process->在所有可能出现问题的类上打上[Hotfix]标签,在所有Lua调用C#的方法打上[LuaCallCSharp],在所有C#调用Lua的方法打上[CSharpCallLua]->打包发布->修改时只需要更新Lua文件,修改资源是(声音,模型,贴图,UI)只需要更新AB包。用户只需要下载Lua文件和AB包
using UnityEngine;
using XLua;
namespace XLuaTest
{
[Hotfix]//在需要修复的类前加上[Hotfix]特性
public class HotfixTest : MonoBehaviour
{
LuaEnv luaenv = new LuaEnv();//Lua虚拟运行环境
private int tick = 0;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
[LuaCallCSharp]
void Update()
{
if (++tick % 50 == 0)
{
Debug.Log(">>>>>>>>Update in C#, tick = " + tick);
}
}
void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 300, 80), "Hotfix"))
{//要修改的类名,要修复的类中的方法,作为替换的Lua中的方法
luaenv.DoString(@"
xlua.hotfix(CS.XLuaTest.HotfixTest, 'Update', function(self)
local a = CS.UnityEngine.GameObject.Find('Main Camera')
CS.UnityEngine.Debug.Log(a.name)
--[[self.tick = self.tick + 1
if (self.tick % 50) == 0 then
print('<<<<<<<<Update in lua, tick = ' .. self.tick)
end--]]
end)
");
}
}
}
}