Files
XCEngine/docs/api/resources/resources-overview.md

83 lines
2.7 KiB
Markdown

# Resources 模块概览
**命名空间**: `XCEngine::Resources`
**类型**: `module`
**描述**: XCEngine 的资源管理系统,提供资源的异步加载、缓存和依赖管理。
## 概述
Resources 模块提供了一套完整的资源管理解决方案,支持同步和异步加载、资源缓存、依赖图管理等功能。
## 模块内容
### 核心组件
| 组件 | 文件 | 描述 |
|------|------|------|
| [IResource](./resources-iresource.md) | `IResource.h` | 资源基类 |
| [ResourceHandle](./resources-resourcehandle.md) | `ResourceHandle.h` | 资源句柄模板 |
| [IResourceLoader](./resources-iloader.md) | `IResourceLoader.h` | 资源加载器接口 |
| [ResourceManager](./resources-resourcemanager.md) | `ResourceManager.h` | 资源管理器 |
| [ResourceCache](./resources-resourcecache.md) | `ResourceCache.h` | 资源缓存 |
| [AsyncLoader](./resources-asyncloader.md) | `AsyncLoader.h` | 异步加载器 |
| [ResourceDependencyGraph](./resources-dependencygraph.md) | `ResourceDependencyGraph.h` | 依赖图 |
| [ResourceTypes](./resources-resourcetypes.md) | `ResourceTypes.h` | 资源类型定义 |
### 具体资源类型
| 组件 | 文件 | 描述 |
|------|------|------|
| [Texture](./resources-texture.md) | `Texture.h` | 纹理资源 |
| [Mesh](./resources-mesh.md) | `Mesh.h` | 网格资源 |
| [Material](./resources-material.md) | `Material.h` | 材质资源 |
| [Shader](./resources-shader.md) | `Shader.h` | 着色器资源 |
| [AudioClip](./resources-audioclip.md) | `AudioClip.h` | 音频资源 |
## 资源类型
| 类型 | 描述 |
|------|------|
| `Texture` | 纹理资源 |
| `Mesh` | 网格/模型资源 |
| `Material` | 材质资源 |
| `Shader` | 着色器资源 |
| `AudioClip` | 音频资源 |
| `Binary` | 二进制数据 |
| `AnimationClip` | 动画片段 |
| `Skeleton` | 骨骼 |
| `Font` | 字体 |
| `ParticleSystem` | 粒子系统 |
| `Scene` | 场景 |
| `Prefab` | 预制体 |
## 使用示例
```cpp
#include <XCEngine/Resources/ResourceManager.h>
// 初始化资源管理器
ResourceManager::Get().Initialize();
ResourceManager::Get().SetResourceRoot("resources/");
// 同步加载资源
ResourceHandle<Texture> tex = ResourceManager::Get().Load<Texture>("textures/player.png");
ResourceHandle<Mesh> mesh = ResourceManager::Get().Load<Mesh>("models/player.fbx");
ResourceHandle<Material> mat = ResourceManager::Get().Load<Material>("materials/player.mat");
// 异步加载
ResourceManager::Get().LoadAsync<Texture>("textures/terrain.png",
[](ResourceHandle<Texture> tex) {
// 加载完成回调
});
// 释放资源
tex.Reset();
mesh.Reset();
```
## 相关文档
- [RHI 模块](../rhi/rhi-overview.md) - GPU 资源创建