找回密码
 立即注册
查看: 282|回复: 0

xLua打包流程

[复制链接]
发表于 2021-8-13 15:42 | 显示全部楼层 |阅读模式
xlua热补丁打包流程

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

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 08:58 , Processed in 0.063070 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表