【整合】 框架使用规则
This commit is contained in:
@@ -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) | 非热更层与热更层边界 |
|
||||
|
||||
Reference in New Issue
Block a user