xLua打包流程

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文件夹复制到工程下面
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值