找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
游戏黄埔已经开课啦,大家速速报名赶快上车
查看: 84|回复: 0

使用HybridCLR进行热更新 内含中文参考手册地址

[复制链接]

185

主题

32

回帖

1056

积分

管理员

积分
1056
发表于 2025-9-10 09:43:09 | 显示全部楼层 |阅读模式
https://www.hybridclr.cn/docs/other/businesscase



🔍 HybridCLR 核心概览
| 项目 | 描述 |
| :--- | :--- |
| 核心能力 | 扩充 IL2CPP,使其从纯 AOT 运行时变为 "AOT + Interpreter" 混合运行时,原生支持动态加载程序集。 |
| 核心特性 | • 近乎完整的 ECMA-335 规范实现
• 零学习和使用成本:热更新代码与 AOT 代码无缝工作,脚本类与 AOT 类在同一个运行时内,可以随意写继承、反射、多线程(volatile、ThreadStatic、Task、async)之类的代码。不需要额外写任何特殊代码、没有代码生成
• 高性能寄存器解释器
• 高效的差分混合执行(DHE):智能识别代码变化,未改动的类和函数以 AOT 方式运行,变化的或新增的则以解释模式运行,让热更新的游戏逻辑的运行性能基本达到原生 AOT 的水平。 |
| 支持版本 | Unity 2019.4.x, 2020.3.x, 2021.3.x, 2022.3.x, 2023.2.x 等 LTS 版本。 |
| 支持平台 | 所有 IL2CPP 支持的平台,如 Android、iOS、Consoles、WebGL 等。 |
⚙️ 工作原理简介
HybridCLR 借鉴了 Mono 的混合模式执行技术,为 IL2CPP 等 AOT 运行时额外提供了解释器模块。具体工作包括:
  • 实现高效的元数据(DLL)解析库:能够动态加载和解析程序集。
  • 改造元数据管理模块:实现元数据的动态注册。
  • 实现 IL 指令集到自定义寄存器指令集的编译器。
  • 实现高效的寄存器解释器:来执行转换后的指令。
  • 提供大量内置(instinct)函数:以提升解释器的性能。

🛠️ 实践指南
  • 安装与初始化:通常通过 Unity 的 Package Manager 从 Git URL 添加 com.code-philosophy.hybridclr 包并进行初始化。
  • 配置热更新程序集:在 Unity 中创建并指定需要热更新的程序集(Assembly Definition)。
  • 编译与生成:使用 HybridCLR 提供的菜单功能(如 HybridCLR/Generate/All)进行必要的生成操作,并将热更新 DLL 放入 StreamingAssets 等特定目录以备加载。
  • 加载与执行:在运行时,通过 System.Reflection.Assembly.Load 等方式加载热更新 DLL,并激活其中的类型和方法。

⚠️ 注意事项
  • 代码剪裁(Link.xml):对于需要热更新的代码,尤其是通过反射使用的类型,务必在 Assets/link.xml 文件中进行预留,防止 IL2CPP 代码剪裁导致运行时找不到类型。
  • 访问控制:如果你的应用需要加载和执行第三方代码,HybridCLR 提供了访问控制策略(AccessPolicy),可以通过配置文件控制第三方代码能访问的函数集合,提升安全性。


希望这些信息能帮助你快速上手 HybridCLR。如果在具体使用过程中遇到问题,查阅官方文档通常是解决问题的最快途径,遇到文档中未解决的疑难问题,可以到社区交流。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|平顶山市图灵科技 ( 豫ICP备2024088136号-1| 豫公网安备41040202000275号 )

GMT+8, 2025-10-29 18:07 , Processed in 0.041124 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表