国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

腾讯正式开源面向 Unity 项目的 Bug 修复神器 Inj

发布时间:2019/09/12标签:   函数    点击量:

原标题:腾讯正式开源面向 Unity 项目的 Bug 修复神器 Inj
InjectFix是腾讯最新对外开源的Unity代码逻辑热修复计划,可完成在Unity线上客户端内,不必迭代新版本,就能疾速修复游戏的线上bug。先说几个亮点: 间接在Unity工程上修正C#便可更新;老名目无需修正原有代码便可应用; 更合乎苹果热更新条目; 每个游戏一份公有补钉格局,保险更有保证。InjectFix经腾讯外部多个名目利用反应非常精良,不只能处理线上bug,还能够无效的进步平常开辟效力,上面咱们聊下这名目的宿世此生。热更计划大乱斗全部支撑iOS的热更计划都有个独特点:更新后辈码都是剖析履行。假如按其更新前能否剖析履行,能够分为两大类:一类是某些模块乃至全部游戏,都始终剖析履行。这是最传统的方法,现在市道上全部支流计划(xLua,slua,tolua,ILRuntime,jsb等等)都支撑这类方法。这类方法的特色: 或多或少都市有些侵入性:ILRuntime剖析履行C#编译后的顺序集,在这些计划外头侵入性能够最小,但也须要对代码重构,把要更新的逻辑拆到独自顺序集。种种非C#的剧本侵入性最大,一个曾经实现的纯C#名目要意图味侧重写。ps:也有一种思绪是经过一个C#转XX剧本东西来完成C#编码,剖析履行,但假如你是一个已有名目想这么转一下,大略率是失利的,除非你一开端就在用这方法在开辟,遇到坑就避开,由于这类计划每每不是完全支撑全体语法,支撑的语法也纷歧定能完整分歧。 基于机能,完成方便性等的斟酌,个别游戏有些处所要以原生的方法跑,这些原生跑的代码出了bug这类方法是能干为力的。 假如应用的剧本是静态范例言语,还会带来代码保护艰苦的成绩。 长处是能够新增功效,有的游戏乃至能够做到一次下载,后续不必整包更新。但苹果条目剖析的章节能够看到,这也纷歧定是坏事。别的一类是以原生方法跑,假如有bug,把逻辑重定向到新的,剖析履行的逻辑。这类方法的特色: 侵入性低,前期名目也能够应用。 畸形逻辑是原生方法运转,有成绩只是部分切换到剖析履行,以是机能比拟好。 会招致代码段增大,增大反比于注入的类的数目。 这类方法每每难以新增功效。第二种方法是接上去探讨的重点,便利起见,咱们称之为“热修复”,热修复最早的成熟计划是xLua供给,经由两年来的应用曾经逐步被接收,tolua#厥后也参加了这功效,也有一些网友基于ILRuntime做了热修复功效。InjectFix是甚么?InjectFix就是一个热修复的完成。那它和别的热修复计划又有甚么差别呢?假想这么个场景,咱们有一个一千行代码的函数,此中有一行有成绩,咱们须要修复它。假如用xLua,须要用lua去从新完成一遍这个函数,任务量大。而基于ILRuntime的热修复,因为其补钉是另一个顺序集,它无奈间接拜访原类的公有成员,以是那999行畸形代码个别也不能间接应用,须要做较多修正。而InjectFix不须要用lua,也不须要像ILRuntime热修复那样别的建一个工程把那一千行逻辑重完成。只要要在Unity原工程间接改掉这行代码,而后标注这函数要更新便可。不只如斯,InjectFix另有别的上风: 运转时十分玲珑,仅100K阁下,比各lua计划,ILRuntime都要小许多,并且不依靠第三方库,纯C#完成。 支撑每个游戏天生一份本人公有的补钉格局,公有的指令界说。如许比拟通用的lua原代码,lua字节码,clr顺序集都更保险些。 支撑Assembly-CSharp.dll以外的dll的修复。 免代码天生,更洁净。它也出缺点,不支撑新增类,也不支撑在已有类新增字段,修bug仍是够用的,但难以经过热更加游戏增添新功效。InjectFix就一个纯洁的修bug东西罢了。黑科技因为InjectFix支撑反复加载补钉,新加载补钉会主动笼罩上一个,这特征能够用来完成真机代码逻辑及时修正。

上一篇:这一次,彻底弄懂“秒杀系统”

下一篇:没有了

返回
版权信息Copyright ? 银河官网 版权所有??? ICP备案编号:鲁ICP备09013610号