| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity集成InjectFix对C#代码热修复 -> 正文阅读 |
|
[游戏开发]Unity集成InjectFix对C#代码热修复 |
文章目录InjectFix介绍插件地址:https://github.com/Tencent/InjectFix 作用: 用于修复线上C# bug 流程: InjectFix包括Inject和Fix两个部分,发包的时候对需要修复的类进行插桩(Inject)处理,线上版本要写好加载热更补丁包的逻辑,通过生成Patch补丁进行资源热更的形式进行修复线上bug。 原理: InjectFix实现bug修复主要靠两部分:虚拟机负责新逻辑的解析执行;注入代码负责把调用重定向到虚拟机。 优势: 代码都以原生的方式执行,只有需要修复的代码会重定向到虚拟机执行,内部使用反射,不如xlua的静态warp,但考虑到只有少量函数需要修复,不会有大量性能损耗。 InjectFix使用说明
[IFix.Patch]修复某个函数,该标签只能用在方法上,直接在方法上面标注一下[IFix.Patch]即可
[IFix.Interpret]新增个函数或者类,在属性,方法,类型上,直接在要新增的代码上面标注一下这个标签即可。 [IFix.CustomBridge]在注入阶段使用; 把一个虚拟机的类适配到原生interface或者把一个虚拟机的函数适配到原生delegate。
[IFix.Filter]在注入阶段使用,过滤某些方法。在注入阶段,凡是在[IFix]标签下的属性里面的值,都会被注入适配代码,但如果不想对某个函数进行注入,可以用该标签进行过滤。该标签只能用在方法上,Configure类中的一个静态方法。
项目中使用【注入(发包前)】
使用PatchManager.Load(stream)加载补丁:
【Fix补丁包(发包后需要修复)】 【接入】 接入遇到的问题记录1. 注入失败,提示下面报错
解决:
2. 泛型Patch报错
InjectFix对于泛型支持有限制,不支持一个不确定的泛型方法,支持确定的泛型方法 后期有坑持续记录 赞赏与支持【收藏与点赞】 【请作者喝杯咖啡】 (完) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 20:37:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |