Unity热更新技术选择
Unity热更新技术选择
最近找工作,发现很多公司都需要用Lua,本身我也用过Lua,虽然是写一些按键精灵之类的脚本时用的。
我之前是学java的,java的热更新方法有两种,热加载、热部署。
热加载:不停服务器进行热更新,但如果重新加载可能会导致数据丢失,因此采用只更新方法。
热部署:通过一个线程将所有class文件进行更新后重启应用,更新内容不受限制,但需要短暂关闭服务器。
对于Unity而言,如果是桌面应用,应该可以支持整个版本对照更新,但对于移动端的处理,便不是太清楚。
网上查看的方案有dll文件转为byte进行动态加载(iOS不支持),通过将部分代码逻辑在脚本(lua、js)里写,再由dll去解析文件。
其unity实现的方案都不是很完美,对于开发而言,都增加其学习成本(我都在怀疑Unity是不是最好的选择了,热更新可能是用Unity做开发一直困扰的问题)
使用 IL2CPP 构建项目时所采取的自动步骤的图表
Lua热更新方案
DLL热更新方案
其他热更新方案
Apple Juice(js)
JSBinding+SharpKit(C#转Js)
InjectFix(直接在Unity工程上修改C#即可更新)
其他游戏引擎热更新方案
写在最后,unity是个好工具,但不完美。但愿能多用几年。