【整合】 框架使用规则

This commit is contained in:
Shiliang
2026-07-10 17:50:20 +08:00
parent db0143be83
commit 001d9e5ef5
45 changed files with 1716 additions and 4062 deletions

View File

@@ -1,95 +1,54 @@
# Hotfix 启动
## 分类
- 核心框架
## 目的
记录 hotfix 侧根入口和功能目录聚合,梳理游戏启动链路
记录非热更层更新启动代码、加载 AOT/HotUpdate 程序集并进入 `HFGameStart` 的稳定顺序
---
## 主要路径
## 核心路径
- 非热更入口:`Assets/Game/GameMono/Scripts/GameDllManager.cs`
- V2 公共下载层:`Assets/StrayFog/Core/SFSubPackageV2.cs`
- 热更入口:`Assets/Game/GameHFScripte/GameFunction/GameRoot/HFGameStart.cs`
- 普通资源检查:`Assets/Game/GameHFScripte/GameFunction/HFDownLoadSubPackage/`
- `Assets/Game/GameHFScripte/GameFunction/GameRoot/`
- 关键文件:`HFGameStart.cs``HFFunCatalogue_GameManager.cs`
- 程序集:`GameHF`
---
## 启动调用链
## 启动顺序
```text
HFGameStart.Init(GameSetting)
-> HFFunCatalogue.SetGameSetting
-> HFFunCatalogue.ChangeLanguage(enHFLanguageClassify.EN)
-> HFGameStartAssetsCheckManager.CheckFirstDownLoadWindowAsset
-> HFGameStart.LoadDB
-> Hotfix_ZYXlsx_GoogleProtobuf_Helper.LoadAllXlsx
-> HFFunCatalogue.Scene.LoadScene(enHFSceneName.Game)
-> HFGameStart.InitManager
-> HFFunCatalogue.UIManager.OpenWindow<登录窗口>
GameDllManager.GameStart
-> SetDownloadConfig
-> 获取远端 V2 subpackage.json
-> CheckAndDownloadBootstrapFiles
-> PersistentData / StreamingAssets / CDN 逐文件 MD5 校验
-> 按 LoadOrder 加载 AOT
-> 按 LoadOrder 加载 HotUpdate
-> 调用热更入口 HFGameStart.Init
-> CommitBootstrapCodeLoaded
-> CheckAndDownloadAllFiles 更新普通资源
-> 加载配置、场景和业务管理器
```
---
Bootstrap 阶段是普通资源的硬门禁。远端清单、代码下载、MD5、AOT、HotUpdate 或热更入口失败时,不提交新清单,也不进入普通资源比对。
## InitManager 初始化单例
## 失败处理
`HFGameStart.InitManager()` 负责初始化各业务/框架管理器,例如:
- 清单获取失败通过独立回调返回并阻断启动。
- 文件失败结果包含 Path、期望 MD5、错误和尝试 URL。
- 下载写临时文件MD5 成功后才替换 PersistentData 正式文件。
- AOT 始终先于 HotUpdate不同版本代码不能混合加载。
- 失败后可以重新执行整个 Bootstrap 阶段,已校验成功文件不会重复下载。
- `HFSeverManager`
- `HFMapManager`
- `HFDamageManager`
- `HFPopupTextManager`
- 各业务管理器(如背包、登录等,按项目实际)
## 热更入口
---
`HFGameStart` 负责设置 GameSetting、检查普通资源、加载配置和场景、初始化业务管理器。业务访问框架能力统一通过 `HFFunCatalogue`
## HFFunCatalogue 聚合入口
`HFFunCatalogue` 提供统一访问入口:
- `UIManager` — UI 窗口
- `Asset` — 资源加载
- `Scene` — 场景加载
- `Sprite` — 图集/精灵
- `EntityPool` — 实体池
- `LinePool` / `SoundPool` — 其他对象池
- `Event` — 事件系统
- `GameConstant` — 游戏常量
- `NDB` — 配置表读取
- `Bag` / `Tips` — 业务相关入口(按项目实际)
---
## 使用规则
- 业务代码通过 `HFFunCatalogue` 访问核心库,禁止直接实例化核心库内部类。
- `HFGameStart` 是 hotfix 侧启动入口,不要绕过它直接初始化管理器。
- 启动顺序修改需谨慎,确保配置表、资源、场景按正确顺序加载。
---
## 相关模块
- [UI 窗口系统](UI窗口系统/README.md)
- [资源管理](资源管理/README.md)
- [场景系统](场景系统.md)
- [数据/配置框架](数据配置框架.md)
---
启动顺序变化必须同时检查非热更层、V2 门禁、普通资源和 UI 首屏,不能只修改热更入口一侧。
## 文档关联
> 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
| 文档 | 关联原因 |
|---|---|
| [modules/模块索引.md](../模块索引.md) | 模块索引是项目知识总入口 |
| [modules/frameworks/UI窗口系统/README.md](UI窗口系统/README.md) | 启动后打开登录窗口依赖 UI 框架 |
| [modules/frameworks/资源管理/README.md](资源管理/README.md) | 启动流程涉及资源检查 |
| [modules/frameworks/场景系统.md](场景系统.md) | 启动流程涉及场景加载 |
| [modules/frameworks/数据配置框架.md](数据配置框架.md) | 启动流程涉及配置表加载 |
| [rules/10-架构说明.md](../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
| [rules/30-模块登记规则.md](../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |
| [模块索引](../模块索引.md) | 模块入口和状态 |
| [资源管理](资源管理/README.md) | V2 清单、Bootstrap 和普通资源 |
| [UI 窗口系统](UI窗口系统/README.md) | 启动后窗口加载 |
| [场景系统](场景系统.md) | 启动后的场景流程 |
| [架构说明](../../rules/10-架构说明.md) | 非热更层与热更层边界 |