游戏上线后,经常会发现需要修复的bug,以及节日期间会有新的活动上线,由于C#编写的程序在unity打包后会编译成dll文件,修改C#代码后只能编译后重新打包,然而让玩家重新下载安装包是不现实的。因此,游戏热更新是必须的。
使用unity开发的游戏,游戏资源的更新可以使用下载新的Assetbundle方式,游戏内代码bug的修复,可以下载新的lua代码,来覆盖原先的逻辑,腾讯退出的xLua热更新解决方案,为C#和lua搭起了很好的桥梁。
xLua插件下载地址:https://github.com/Tencent/xLua
unity中环境配置:
1.所需要的文件:
首先将xLua中Assets文件夹中文件全部复制到unity的Assets文件夹下,将外层Tools文件复制到unity中与Assets文件夹同级处
2.File--PlayerSettings--OtherSettings 中打上热更新标志(重要)
完成上述准备工作后,会多出XLua菜单项,GenerateCode(生成代码)和Hotfix Inject In Editor(热更新注入编辑器),是非常重要的两个选项,后续的补丁开发过程中,但凡需要热更新的C#代码发生变动,都要执行这两步菜单操作。
选择XLua文件中的Examples/08_Hotfix/HotfixTest场景,选择GenerateCode
再选择Hotfix Inject In Editor
显示出上面日志证明环境配置成功
运行场景后,发现此时打印的日志是通过C#代码
点击Hotfix按钮,可以看到日志打印已经改为lua
至此,lua代码逻辑代替C#代码,完成代码热更新。下一节将介绍C#代码访问lua中的变量/方法/表。