xLua打包流程

    科技2024-05-26  101

    xlua热补丁打包流程

    1. 将需要交互的脚本打标签并生成Code:

    - 将需要进行热补丁的代码脚本类名上加上 [Hotfix] 标签 - 将需要C#调用lua的方法或类名加上 [CSharpCallLua] 标签 - 将需要lua调用C#的方法或类名加上 [LuaCallCSharp] 标签 - 执行菜单栏 XLua - Generate Code - 需要手动执行菜单栏 XLua-Hotfix Inject in Editor

    2. 添加 HOTFIX_ENABLE 宏定义

    - 在 ProjectSetting - Player - Other Setting - Scripting Define Symbols 中添加 HOTFIX_ENABLE

    3. 打AB包

    - 将需要打AB包的文件加上AssetBundle,选中文件,在Inspector窗口下方设置Assetbundle和名称 - 执行菜单栏ToolsAB-Generate生成对应平台的包 - 会自动打开生成包的文件夹,将包上传至服务器 - 每次生成包,这里为了方便编辑器操作直接执行了(Hotfix Inject in Editor),也可手动执行菜单栏 XLua-Hotfix Inject in Editor

    4. 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 [C]: 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文件夹复制到工程下面
    Processed: 0.025, SQL: 8