补丁流程
1.using XLua;
2.打标签 [Hotfix]
3.编写lua脚本
xlua.hotfix(classname,methodname,function(self)
--方法代码
end)
坑:bullectAudio取不到值
private AudioSource bullectAudio;
private属性不能直接用,需要加xlua.private_accessible(calss)
补丁流程
1.using XLua;
2.打标签 [Hotfix]
3.编写lua脚本
xlua.hotfix(classname,methodname,function(self)
--方法代码
end)
坑:bullectAudio取不到值
private AudioSource bullectAudio;
private属性不能直接用,需要加xlua.private_accessible(calss)
坑1:注销虚拟机委托
void Start () {
LuaEnv env = new LuaEnv();
env.AddLoader(MyLoader);
env.DoString("require 'fish'");
}
byte[] MyLoader(ref string pathfile)
{
string absPath = @"E:\ProjA\LUALearn\" + pathfile + ".lua.txt";
return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
}
坑:
lua编码使用UTF8编码格式
打包前删除例子
缺少2个步骤
1.xlua -- 第一行按钮 生成
2.xlua -- 第三行按钮 注入
--将tools复制到工程文件夹
--dll文件复制到工程的Editor
位于Unity2017\Editor\Data\Managed
复制到Assets\XLua\Src\Editor
Unity.Cecil.dll
Unity.Cecil.Mdb.dll
Unity.Cecil.Pdb.dll
坑:工程目录不能带中文
延时功能可以使用,0.7s是延时时间
Invoke("Prize", 0.7f);
模式 框架 了解一下
如果要先执行原有的方法 再执行补丁方法
lua中:
local util = require 'util'
util.hotfix_ex(CS.XX,"Start",function(self)
self:Start()
xxxxxxxx
end)
打开热更新的宏
当前工程有任何更改,都需要:
Xlua -> Generate Code
再点击
Xlua -> Hotfix inject in Editor
(如果有出错,先Clear Generate Code)
打包前,记得删除example文件夹,否则会各种出错。
如果还是有错误,可能需要copy dll文件:
xlua放置目录不要有中文