InjectFix是腾讯最新对外开源的Unity代码逻辑热修复方案,可实现在Unity线上客户端内,不用迭代新版本,就能快速修复游戏的线上bug。
先说几个亮点:
1、直接在Unity工程上修改C#即可更新;老项目无需修改原有代码即可使用;
2、更符合苹果热更新条款;
3、每个游戏一份私有补丁格式,安全更有保障。
InjectFix经腾讯内部多个项目应用反馈十分良好,不仅能解决线上bug,还可以有效的提高日常开发效率,下面我们聊下这项目的前世今生。
热更方案大乱斗
所有支持ios的热更方案都有个共同点:更新后代码都是解析执行。如果按其更新前是否解析执行,可以分为两大类:
一类是某些模块甚至整个游戏,都一直解析执行。这是最传统的方式,目前市面上所有主流方案(xLua,slua,tolua,ILRuntime,jsb等等)都支持这种方式。这种方式的特点:
1、或多或少都会有些侵入性:ILRuntime解析执行C#编译后的程序集,在这些方案里头侵入性可能最小,但也需要对代码重构,把要更新的逻辑拆到单独程序集。各种非C#的脚本侵入性最大,一个已经完成的纯C#项目要用意味着重写。
ps:也有一种思路是通过一个C#转XX脚本工具来实现C#编码,解析执行,但如果你是一个已有项目想这么转一下,大概率是失败的,除非你一开始就在用这方式在开发,碰到坑就避开,因为这类方案往往不是完整支持全部语法,支持的语法也不一定能完全一致。
2、基于性能,实现便利性等的考虑,一般游戏有些地方要以原生