这两年,各种Unity热更新方案如雨后春笋般出来了,今天来写篇文章来对比一下Unity各大热更新方案的优缺点。目前主流的Unity热更新的方案有:
Lua系解决方案: 内置一个Lua虚拟机,做好UnityEngine与C#框架的Lua导出。典型的框架有xLua, uLua,大体都差不多。
接下来我们从几个点来分析比对这几个热更新的方案:
(1) 可热更的代码的范围;
(2) 发布新版本的时,新版本的性能与老版本热更;
(3) 热更解释执行效率的对比分析;
(4) 哪种方案更符合开发者的开发习惯;
可热更的代码的范围对比
Lua,方案都是项目种内置Lua虚拟机,它能热更的范围是使用Lua开发的所有脚本都可以热更,C#开发的代码可以通过提前的hotfix来做热更补丁。虽然Lua方案看上去Lua代码和C#代码都可以热更,但是其实hotfix来做c#代码热更的时候,需要打标记,你无法预判哪些需要C#可能会被更新,同时hotfix经过几个版本迭代,以前版本有热补丁,新版本没有热补丁,管理起来非常的麻烦。
ILRuntime/purets方案都是Unity内置.net字节码解释器/TypeScript/JavaScript解释器, 在热更项目中编写的代码,都可以热更,但是普通C#编写的代码无法热更新。HybridCLR(wolong) huatuo方案: 在IL2CPP VM中内置一个.net 字节码解释器,同时还会把.net里面的数据对象映射到native 的数据对象,所以huatuo的任何c#编写的代码都可以热更新。