docs: update resources API docs
This commit is contained in:
95
docs/api/resources/resource-package/index.md
Normal file
95
docs/api/resources/resource-package/index.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# ResourcePackage 类
|
||||
|
||||
## 命名空间
|
||||
|
||||
`XCEngine::Resources`
|
||||
|
||||
## 类型
|
||||
|
||||
类 (Class)
|
||||
|
||||
## 描述
|
||||
|
||||
ResourcePackage 是 XCEngine 资源包的核心类,用于读取和管理 `.xcp` 格式的资源包文件。资源包是一种将多个资源文件打包成单一文件的格式,支持文件枚举、读取和校验。
|
||||
|
||||
## 概述
|
||||
|
||||
ResourcePackage 提供了一套完整的资源包读取接口,包括打开/关闭包、查询文件存在性、读取文件内容、获取文件大小以及枚举包内文件等功能。包文件格式采用二进制结构,包含文件头、清单和数据区域。
|
||||
|
||||
包文件格式:
|
||||
- **文件头** (20 字节): 魔数 "XCRP" (4B) + 版本号 (2B) + 清单大小 (4B) + 文件数量 (4B) + 数据偏移 (8B)
|
||||
- **清单区域**: 存储文件元数据列表
|
||||
- **数据区域**: 存储实际文件数据
|
||||
|
||||
## 公共方法表格
|
||||
|
||||
| 方法 | 签名 | 描述 |
|
||||
|------|------|------|
|
||||
| [Open](open.md) | `bool Open(const Containers::String& packagePath)` | 打开资源包文件 |
|
||||
| [Close](close.md) | `void Close()` | 关闭资源包并释放资源 |
|
||||
| [IsValid](isvalid.md) | `bool IsValid() const` | 检查包是否有效 |
|
||||
| [Exists](exists.md) | `bool Exists(const Containers::String& relativePath) const` | 检查文件是否存在 |
|
||||
| [Read](read.md) | `Containers::Array<Core::uint8> Read(const Containers::String& relativePath) const` | 读取文件内容 |
|
||||
| [GetSize](getsize.md) | `size_t GetSize(const Containers::String& relativePath) const` | 获取文件大小 |
|
||||
| [Enumerate](enumerate.md) | `void Enumerate(const Containers::String& pattern, Containers::Array<Containers::String>& outFiles) const` | 枚举匹配的文件 |
|
||||
| [GetInfo](getinfo.md) | `const PackageInfo& GetInfo() const` | 获取包信息 |
|
||||
|
||||
## 嵌套类型
|
||||
|
||||
### PackageInfo
|
||||
|
||||
包文件的元信息结构体。
|
||||
|
||||
| 成员 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| `path` | `Containers::String` | 包文件路径 |
|
||||
| `version` | `Core::uint16` | 包文件版本号 |
|
||||
| `fileCount` | `size_t` | 包内文件数量 |
|
||||
| `totalSize` | `size_t` | 包文件总大小 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
#include "Resources/ResourcePackage.h"
|
||||
|
||||
using namespace XCEngine;
|
||||
using namespace XCEngine::Containers;
|
||||
using namespace XCEngine::Resources;
|
||||
|
||||
// 打开资源包
|
||||
ResourcePackage package;
|
||||
if (!package.Open("assets/resources.xcp")) {
|
||||
// 处理打开失败
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查文件是否存在
|
||||
if (package.Exists("textures/player.png")) {
|
||||
// 读取文件
|
||||
Array<uint8> data = package.Read("textures/player.png");
|
||||
// 处理数据...
|
||||
}
|
||||
|
||||
// 获取文件大小
|
||||
size_t size = package.GetSize("textures/player.png");
|
||||
|
||||
// 枚举所有文件
|
||||
Array<String> files;
|
||||
package.Enumerate("*", files);
|
||||
for (const auto& file : files) {
|
||||
printf("Found file: %s\n", file.CStr());
|
||||
}
|
||||
|
||||
// 获取包信息
|
||||
const auto& info = package.GetInfo();
|
||||
printf("Package: %s, Version: %u, Files: %zu\n",
|
||||
info.path.CStr(), info.version, info.fileCount);
|
||||
|
||||
// 关闭资源包
|
||||
package.Close();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [ResourcePackageBuilder](../audio-loader/index.md) - 资源包构建器
|
||||
- [ResourceTypes](../audio-loader/index.md) - 资源类型定义
|
||||
Reference in New Issue
Block a user