技术栈: YooAsset (资源管理) + HybridCLR (代码热更)
本文档详述了 Project Vampirefall 的热更新管线。我们采用这一组合以实现 Android/iOS 平台的 全量热更能力,绕过应用商店审核进行快速迭代。
我们选择 YooAsset 替代 Addressables,因为它提供了更符合国内开发习惯的分包策略、加密机制和版本管理。
我们将资源分为以下几个 Package,以优化下载和内存:
EBundleLoadingMode.LoadBundle。Chapter1, Chapter2)。AssetBundleCollector 自动扫描 Assets/Art 和 Assets/Res 下的目录。DefaultPackage 中的敏感数据 (如配置表) 应用 Offset 偏移加密。v1.0.build_timestamp 格式。HybridCLR 使得 Unity 的 IL2CPP 后端也能加载动态 DLL,实现了 C# 的全热更。
mscorlib, System, UnityEngine, YooAsset, UniTask.Assembly-CSharp.dll (游戏核心逻辑).Game.Logic.dll, Game.UI.dll.为了让 AOT 代码能调用热更代码中的泛型函数,需要加载 AOT DLL 的元数据。
HybridCLRSettings 中列出所有用到的 AOT DLL。HybridCLR.RuntimeApi.LoadMetadataForAOTAssembly。HybridCLR/CompileDll (生成热更 DLL)。RawFile 收集目录。graph TD
A[启动游戏] --> B{检测运行模式}
B -- Editor --> C[进入游戏]
B -- HostPlay --> D[初始化 YooAsset]
D --> E[获取远端版本信息]
E --> F{有新版本?}
F -- No --> G[加载 AOT 元数据]
F -- Yes --> H[下载补丁清单]
H --> I[下载 DLL & 核心资源]
I --> G
G --> J[反射调用热更入口]
J --> K[进入游戏主逻辑]
HybridCLR 的补充元数据机制,或者在 AOT 代码中预留常用泛型实例。GameVersion 一致。link.xml 中保留必要的命名空间。