Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
开源中国 2019-09-12 00:00:00 发布的技术动态 - OurCoders (我们程序员)
开源中国
2019-09-12 00:00:00 发布
#腾讯#【腾讯正式开源面向 Unity 项目的 Bug 修复神器 InjectFix】网页链接InjectFix 是腾讯最新对外开源的 Unity 代码逻辑热修复方案,可实现在 Unity 线上客户端内,不用迭代新版本,就能快速修复游戏的线上 bug。它和其它热修复方案又有什么不同呢?设想这么个场景,我们有一个一千行代码的函数,其中有一行有问题,我们需要修复它。如果用 xLua,需要用 lua 去重新实现一遍这个函数,工作量大。而基于 ILRuntime 的热修复,由于其补丁是另一个程序集,它无法直接访问原类的私有成员,所以那 999 行正常代码一般也不能直接使用,需要做较多修改。而 InjectFix 不需要用 lua,也不需要像 ILRuntime 热修复那样另外建一个工程把那一千行逻辑重实现。只需要在 Unity 原工程直接改掉这行代码,然后标注这函数要更新即可。不仅如此,InjectFix还有其它优势:1.运行时非常小巧,仅 100K 左右,比各 lua 方案,ILRuntime 都要小很多,而且不依赖第三方库,纯 C# 实现2.支持每个游戏生成一份自己私有的补丁格式,私有的指令定义。这样相比通用的 lua 原代码,lua 字节码,clr 程序集都更安全些3.支持 Assembly-CSharp.dll 之外的dll的修复4.免代码生成,更干净