Unity CSharp 热更新
所谓热更新是指一个应用在不修改已发布的母包(.apk .ipa)的情况下修改其内容。当然调整美术资源和代码逻辑都属于热更新,只要母包本身没有被修改。这里只是比较用于Unity游戏中热更新CSharp代码的两种方案的异同。
ILRuntime
https://github.com/Ourpalm/ILRuntime
ILRuntime是掌趣开源的CSharp热更新方案,我上一个项目就使用了该方案,使用比较友好,开发也相对较快,当然也有一些问题。
原理: 类似tolua,将热更新代码编译为dll,在运行时通过虚拟机来解释执行热更代码。
优点:
- 开发效率高
- 自由增加热更模块
- 使用C#编写热更代码
缺点:
- 代码运行效率低(UI等逻辑对效率不敏感,不用关心)
- 更多的GC
InjectFix
https://github.com/Tencent/InjectFix
InjectFix是腾讯开源的类似XLua的热更新方案,该方案放弃了Lua更新,改由纯CSharp的更新方案,使得拥有了静态语言的优点。
原理: 通过对现有工程里的任意方法插桩,在运行时再执行热更的方法来实现热更代码。
优点:
- 开发效率高
- 运行效率高
- 直接在Unity工程中写代码(电脑性能不好,每次编译时间会有几秒钟)
缺点:
- 不支持新增类型
- 不支持新增方法
- 不支持新增值类型的泛型方法 (值类型的泛型方法的需要编译为不同的函数)
- 维护成本高,容易在热更时误操作到以上不支持的项
总结
对于小型游戏,允许经常更新母包的游戏建议使用InjectFix
严重依赖热更的项目,上线后还要热更新模块而非简单的修修小Bug,建议使用ILRuntime
» 转载请注明来源:www.litefeel.com » 《Unity CSharp 热更新》
» 本文链接地址:https://www.litefeel.com/unity-csharp-hotfix/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/unity-csharp-hotfix/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS