xLua打包流程
xlua热补丁打包流程1. 将需要交互的脚本打标签并生成Code:
- 将需要进行热补丁的代码脚本类名上加上 标签
- 将需要C#调用lua的方法或类名加上 标签
- 将需要lua调用C#的方法或类名加上 标签
- 执行菜单栏 XLua - Generate Code
- 需要手动执行菜单栏 XLua-Hotfix Inject in Editor2. 添加 HOTFIX_ENABLE 宏定义
- 在 ProjectSetting - Player - Other Setting - Scripting Define Symbols 中添加 HOTFIX_ENABLE3. 打AB包
- 将需要打AB包的文件加上AssetBundle,选中文件,在Inspector窗口下方设置Assetbundle和名称
- 执行菜单栏ToolsAB-Generate生成对应平台的包
- 会自动打开生成包的文件夹,将包上传至服务器
- 每次生成包,这里为了方便编辑器操作直接执行了(Hotfix Inject in Editor),也可手动执行菜单栏 XLua-Hotfix Inject in Editor4. lua热补丁代码
{例:
xlua.hotfix(CS.HotfixTest,"HotfixTest",function( self )print("更新为热补丁代码")end)}5. require 引用其他lua包要和主包打在同一个ab文件下
{例:使用util.hotfix_ex,不替换全部代码,在function内 self:方法名 执行之前的代码 再执行补丁代码
local util =require("util")
util.hotfix_ex(CS.HotfixTest,"HotfixExTest",function( self )
self:Start()print("更新为热补丁代码2")end)}6. lua代码注意事项:
- xlua.private_accessible(CS.类)获得该类私有字段或方法访问权限
- CS.UnityEngine.GameObject.Find("") 这个Find要用.
- GetComponent("组建名") 这个要用:
- 静态方法用 类名.方法名
- 静态属性用 类名.属性名
- 非静态方法调用 该类的对象:方法名
- 非静态属性用 该类的对象.属性名7. 常见报错:
- c# exception in LoadFromCustomLoaders : in function 'require' 这个报错是没有将引用包和主包放在一起导致require找不到包
- LuaException: xlua.access, no field __Hotfix0_Start 这个是没有执行,菜单栏 XLua-Hotfix Inject in Editor操作
- You can't inject before the compilation is done 正在编译,编译之后才可进行注入
- Error:can not find delegate for BoardLogin.Start! try re-genertate code. 没有进行生成Code需要先执行,菜单栏 XLua - Generate Code再进行注入
please install the Tools 需要将Tool文件夹复制到工程下面
页:
[1]