137 lines
3.2 KiB
Markdown
137 lines
3.2 KiB
Markdown
|
|
# 资源管理
|
|||
|
|
|
|||
|
|
## 分类
|
|||
|
|
|
|||
|
|
- 核心框架
|
|||
|
|
|
|||
|
|
## 目的
|
|||
|
|
|
|||
|
|
管理 AssetBundle、语言资源、图集、prefab、DllBytes 等资源的加载、缓存和释放。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 核心路径
|
|||
|
|
|
|||
|
|
- AssetBundle:`Assets/Game/GameHFScripte/CopyToHF/AssetBundle/`
|
|||
|
|
- 图集:`Assets/Game/GameHFScripte/CopyToHF/SpriteAtlas/`
|
|||
|
|
- 资源目录:`Assets/Game/GameHFResource/CN/`、`EN/`、`DllBytes/`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 核心类
|
|||
|
|
|
|||
|
|
| 类 | 职责 |
|
|||
|
|
|---|---|
|
|||
|
|
| `HFABMgr` | AssetBundle 资源管理器单例 |
|
|||
|
|
| `HFAssetLoader` | 具体资源加载器 |
|
|||
|
|
| `HFAssetRequest` | 资源加载请求 |
|
|||
|
|
| `HFAssetBundlePathAttribute` | 资源路径属性,标记资源根目录、相对路径、语言包规则等 |
|
|||
|
|
| `HFGlobal_SpriteAtlas` | 图集全局管理 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 资源路径规则
|
|||
|
|
|
|||
|
|
`HFAssetBundlePathAttribute` 记录:
|
|||
|
|
|
|||
|
|
- 资源根目录
|
|||
|
|
- 相对路径
|
|||
|
|
- 是否忽略语言包
|
|||
|
|
- 是否场景
|
|||
|
|
- 线程优先级
|
|||
|
|
|
|||
|
|
`ChangeLanguage` 生成:
|
|||
|
|
|
|||
|
|
- `editorPath`
|
|||
|
|
- `assetBundlePath`
|
|||
|
|
- `assetBundleKey`
|
|||
|
|
- `assetName`
|
|||
|
|
|
|||
|
|
`HFABMgr.OnCheckAssetBundlePathAttributeLanguage` 在当前语言无资源时回退默认语言。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 加载流程
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
HFABMgr.LoadInMemory(pathAttr)
|
|||
|
|
-> OnReadAssetBundleManifest()
|
|||
|
|
-> OnCheckAssetBundlePathAttributeLanguage()
|
|||
|
|
-> new HFAssetRequest(...)
|
|||
|
|
-> OnStartLoad()
|
|||
|
|
-> 获取或创建 HFAssetLoader
|
|||
|
|
-> HFAssetLoader.LoadAsset()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 加载模式
|
|||
|
|
|
|||
|
|
### Editor 模式
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
enHFAbLoadModel.Editor
|
|||
|
|
-> SFAssetUtility_Unity.LoadFromFile(editorPath)
|
|||
|
|
-> 直接读取编辑器资源
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 非 Editor 模式
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
读取 AssetBundleManifest
|
|||
|
|
-> 解析依赖
|
|||
|
|
-> AssetBundle.LoadFromMemoryAsync 读取主资源
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### CDN / 边玩边下
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
缺失资源进入 WaitDownload
|
|||
|
|
-> HFAssetsDownLoadManager 下载
|
|||
|
|
-> HFABMgr.SaveFile 保存到本地
|
|||
|
|
-> 加载完成
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 图集加载
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
SpriteAtlasManager.atlasRequested
|
|||
|
|
-> HFGlobal_SpriteAtlas.Instance.GetSpriteAtlasPath(spriteAtlasName)
|
|||
|
|
-> HFABMgr.OnLoadInMemory(spriteAtlasAttribute)
|
|||
|
|
-> callback(SpriteAtlas)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 使用规则
|
|||
|
|
|
|||
|
|
- 资源路径统一通过 `HFAssetBundlePathAttribute` 配置。
|
|||
|
|
- 加载资源统一走 `HFFunCatalogue.Asset.LoadAsset()` 或 `HFABMgr.LoadInMemory()`。
|
|||
|
|
- 语言资源按 `GameHFResource/<lang>/` 分目录存放。
|
|||
|
|
- 图集按业务或 UI 模块划分。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 相关模块
|
|||
|
|
|
|||
|
|
- [UI 窗口系统](../UI窗口系统/README.md)
|
|||
|
|
- [实体系统](../实体系统/README.md)
|
|||
|
|
- [场景系统](../场景系统.md)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 文档关联
|
|||
|
|
|
|||
|
|
> 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
|
|||
|
|
|
|||
|
|
| 文档 | 关联原因 |
|
|||
|
|
|---|---|
|
|||
|
|
| [modules/模块索引.md](../../模块索引.md) | 模块索引是项目知识总入口 |
|
|||
|
|
| [modules/frameworks/UI窗口系统/README.md](../UI窗口系统/README.md) | UI 资源加载依赖资源管理 |
|
|||
|
|
| [modules/frameworks/实体系统/README.md](../实体系统/README.md) | 实体资源加载依赖资源管理 |
|
|||
|
|
| [modules/frameworks/场景系统.md](../场景系统.md) | 场景资源加载依赖资源管理 |
|
|||
|
|
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
|
|||
|
|
| [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |
|