?前言
xLua在热更新上的优势
1、可以开发只用C#;
2、出Bug时采用Lua来进行热更新,下次整体更新时换回正确的C#。
可能忽略的热更新配置
-
在Unity3D的File->Build Setting->Scripting Define Symbols下添加HOTFIX_ENABLE宏菜单栏中,执行xLua/Generat Code, 会在新建Gen文件夹,下面生成一些wrap文件。
注意:
-
在项目中集成,最好自己写一份配置,替换ExampleGenConfig,比如取名CustomGenConfig.cs,加入了[Hotfix]标签。对于这样的类型映射表,需要在C#端
//需要热更新的类型
[Hotfix]
public static List<Type> by_field = new List<Type>()
{ };
热更新实现逻辑
-
游戏启动
-
项目发布前
在自定义的Lua与C#类型映射表,加入需要添加【Hotfix】标签的类型。
Tip:只有加上【Hotfix】标签的类型才可以调用xLua.hotfix()。
使用步骤简述
-
在开启HOTFIX_ENABLE宏后,菜单XLua下就出现Hotfix Inject in Editor子菜单。 -
分别创建两个脚本,分别是C#脚本和Lua脚本(lua脚本放在什么位置取决于项目中定义的loader)。 -
在C#脚本中编写TestHotFix类,打上[Hotfix]标签 -
在Lua脚本中编写如下代码
local GameObject=CS.UnityEngine.GameObject
local deltime=CS.UnityEngine.Time.deltime
local cube=GameObject.Find(‘go’)//试用GameObject类获得名为go的对象。
xlua.hotfix(CS.TestHotFix, ‘FuncName’, function(self) //可以调用C#脚本中TesetHotFix类的名为FuncName的函数。
cube.transform.rotation=cube.transform.rotation*CS.UnityEngine.Quaternion.Euler(0,1,0)
end)
最终:
执行CLear Generated Code----Generate Code----Hotfix Inject In Editor。这样就是一个通过xLua来进行热更新的基础流程描述。
具体实践还没有操作过,希望能够有机会实践再进一步修改此文档。
|