Files
XCEngine/docs/api/XCEngine/Core/IO/IO.md

61 lines
3.4 KiB
Markdown
Raw Normal View History

2026-03-26 16:45:24 +08:00
# IO
2026-03-27 19:18:53 +08:00
**命名空间**: `XCEngine::Resources`
2026-03-26 16:45:24 +08:00
**类型**: `submodule`
2026-03-27 19:18:53 +08:00
**描述**: 定义资源路径辅助、资源加载器接口、包文件与虚拟文件系统相关基础设施。
2026-03-26 16:45:24 +08:00
## 概览
2026-03-27 19:18:53 +08:00
`Core/IO` 这个目录在物理结构上属于 `Core`,但逻辑命名空间已经落在 `XCEngine::Resources`。它承担的是“资源系统和底层文件访问之间的桥梁层”:
- [ResourcePath](ResourcePath/ResourcePath.md) 负责轻量路径拆分和 GUID 派生
- [IResourceLoader](IResourceLoader/IResourceLoader.md) 负责把磁盘数据转换成运行时 `IResource`
- [FileArchive](FileArchive/FileArchive.md) 和 [ResourcePackage](ResourcePackage/ResourcePackage.md) 负责资源容器抽象
- [ResourceFileSystem](ResourceFileSystem/ResourceFileSystem.md) 试图把目录、归档和包文件统一到一个虚拟资源访问入口
从设计方向看,这一层很像商业引擎里的 runtime file access / resource loading substrate。它不是完整的编辑器资产数据库更接近运行时资源读取和格式装载层。
## 设计要点
- `IResourceLoader` 是当前最关键的接口,因为 [ResourceManager](../Asset/ResourceManager/ResourceManager.md) 最终就是靠它真正加载资源。
- `ResourcePath` 只是字符串辅助类,不负责真实文件系统查询、标准化或路径规范化。
- `FileArchive``ResourcePackage``ResourceFileSystem` 已经搭好了虚拟文件系统方向的 API 轮廓,但当前实现普遍还比较早期。
- 当前这层里存在一些需要明确写进文档的实现差异,例如:
- `ResourcePath::GetExtension()` 返回带点扩展名,如 `.png`
- `IResourceLoader::GetExtension()` 返回不带点扩展名,如 `png`
## 当前实现现状
- 真正稳定可用的主路径仍然是“具体 loader + [ResourceManager](../Asset/ResourceManager/ResourceManager.md) 同步加载”。
- `ResourcePath` 当前可用于做名称拆分和 GUID 生成,但不应被理解成跨平台标准化路径工具。
- `FileArchive` 当前更像“目录前缀适配器”,不是真正的压缩归档读取器。
- `ResourcePackage` 的 builder 和 reader 当前还没有形成闭环。
- `ResourceFileSystem` 的虚拟文件系统层当前仍有明显占位实现和行为缺口。
2026-03-26 16:45:24 +08:00
## 头文件
- [FileArchive](FileArchive/FileArchive.md) - `FileArchive.h`
- [IResourceLoader](IResourceLoader/IResourceLoader.md) - `IResourceLoader.h`
- [ResourceFileSystem](ResourceFileSystem/ResourceFileSystem.md) - `ResourceFileSystem.h`
- [ResourcePackage](ResourcePackage/ResourcePackage.md) - `ResourcePackage.h`
- [ResourcePath](ResourcePath/ResourcePath.md) - `ResourcePath.h`
2026-03-27 19:18:53 +08:00
## 推荐阅读顺序
1. 先读 [ResourcePath](ResourcePath/ResourcePath.md),理解当前路径字符串约定和 GUID 派生方式。
2. 再读 [IResourceLoader](IResourceLoader/IResourceLoader.md),这是连接 IO 层和 Asset 层的关键接口。
3. 然后读 [ResourceFileSystem](ResourceFileSystem/ResourceFileSystem.md),了解当前虚拟文件系统层的设计方向和限制。
4. 最后再读 [FileArchive](FileArchive/FileArchive.md) 和 [ResourcePackage](ResourcePackage/ResourcePackage.md),理解当前容器格式支持做到哪一步。
## 相关指南
- [Resource Paths, Packages, And Virtual File System](../../../_guides/Core/IO/Resource-Paths-Packages-And-Virtual-FileSystem.md)
2026-03-26 16:45:24 +08:00
## 相关文档
- [上级目录](../Core.md)
2026-03-27 19:18:53 +08:00
- [Asset](../Asset/Asset.md)
2026-03-26 16:45:24 +08:00
- [API 总索引](../../../main.md)