refactor: reorganize docs into plan/ and add skills/

This commit is contained in:
2026-03-18 17:49:22 +08:00
parent fc7c8f6797
commit 9bad996ecf
143 changed files with 13263 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
# IResourceLoader
**命名空间**: `XCEngine::Resources`
**类型**: `class` (abstract)
**描述**: 资源加载器抽象接口,定义了资源加载的标准协议。每个资源类型需要提供对应的加载器实现。
## 概述
`IResourceLoader` 是资源加载系统的核心抽象接口。它定义了同步和异步加载资源的方法,以及资源类型的查询和依赖信息的获取。`ResourceManager` 通过注册加载器来支持不同类型资源的加载。
## 公共方法
### 资源信息
| 方法 | 描述 |
|------|------|
| `ResourceType GetResourceType() const` | 获取此加载器支持的资源类型 |
| `const Containers::String& GetResourceTypeName() const` | 获取资源类型的字符串名称 |
| `size_t GetResourceSize(const Containers::String& path) const` | 获取资源文件大小 |
### 同步加载
| 方法 | 描述 |
|------|------|
| `LoadResult Load(const Containers::String& path, ImportSettings* settings)` | 同步加载资源 |
| `bool Save(const Containers::String& path, IResource* resource)` | 保存资源到文件 |
### 异步加载
| 方法 | 描述 |
|------|------|
| `LoadResult LoadAsync(const Containers::String& path, ImportSettings* settings)` | 异步加载资源(内部使用) |
### 依赖管理
| 方法 | 描述 |
|------|------|
| `Containers::Array<Containers::String> GetDependencies(const Containers::String& path) const` | 获取资源依赖的文件路径列表 |
### 资源操作
| 方法 | 描述 |
|------|------|
| `bool Reload(IResource* resource, const Containers::String& path)` | 重新加载资源 |
| `void Unload(IResource* resource)` | 卸载资源 |
### 文件系统
| 方法 | 描述 |
|------|------|
| `bool Exists(const Containers::String& path) const` | 检查资源文件是否存在 |
| `Containers::String ResolvePath(const Containers::String& relativePath) const` | 解析资源路径 |
## LoadResult 结构体
加载操作的返回值结构体。
```cpp
struct LoadResult {
IResource* resource = nullptr; // 加载的资源对象
bool success = false; // 是否成功
Containers::String errorMessage; // 错误信息
size_t memorySize = 0; // 资源内存大小
Containers::Array<Containers::String> dependencies; // 依赖列表
};
```
### 布尔转换
| 转换 | 描述 |
|------|------|
| `explicit operator bool() const` | `success == true` 时返回 true |
## 使用示例
```cpp
class TextureLoader : public IResourceLoader {
public:
ResourceType GetResourceType() const override {
return ResourceType::Texture;
}
const Containers::String& GetResourceTypeName() const override {
static Containers::String name = "Texture";
return name;
}
LoadResult Load(const Containers::String& path,
ImportSettings* settings) override {
LoadResult result;
// 实现加载逻辑...
result.success = true;
result.resource = new Texture();
return result;
}
Containers::Array<Containers::String>
GetDependencies(const Containers::String& path) const override {
return {}; // 纹理通常无依赖
}
};
// 注册加载器
ResourceManager::Get().RegisterLoader(new TextureLoader());
```
## 相关文档
- [ResourceManager](./resources-resourcemanager.md) - 资源管理器
- [AsyncLoader](./resources-asyncloader.md) - 异步加载器