Files
XCEngine/docs/api/resources/material-loader/index.md

60 lines
2.2 KiB
Markdown
Raw Normal View History

2026-03-20 02:35:35 +08:00
# MaterialLoader
## 命名空间
`XCEngine::Resources`
## 类型
类 (Class)
## 描述
材质资源加载器,负责从磁盘加载 `.mat``.material``.json` 格式的材质资源文件。
## 概述
`MaterialLoader` 继承自 `IResourceLoader`,实现了材质资源的加载功能。它支持多种材质文件格式,能够解析材质文件中的 shader 引用并自动加载对应的 Shader 资源。加载过程中会提取材质的基本属性信息并创建 `Material` 对象。
## 公共方法
| 方法 | 签名 | 描述 |
|------|------|------|
| [MaterialLoader](methods/constructor.md) | `MaterialLoader()` | 默认构造函数 |
| [~MaterialLoader](methods/destructor.md) | `virtual ~MaterialLoader()` | 析构函数 |
2026-03-20 02:35:35 +08:00
| [GetResourceType](methods/get-resource-type.md) | `ResourceType GetResourceType() const` | 返回资源类型为 Material |
| [GetSupportedExtensions](methods/get-supported-extensions.md) | `Array<String> GetSupportedExtensions() const` | 返回支持的扩展名列表 |
| [CanLoad](methods/can-load.md) | `bool CanLoad(const String& path) const` | 检查给定路径是否可被加载 |
| [Load](methods/load.md) | `LoadResult Load(const String& path, const ImportSettings* settings = nullptr)` | 加载指定路径的材质资源 |
| [GetDefaultSettings](methods/get-default-settings.md) | `ImportSettings* GetDefaultSettings() const` | 返回默认导入设置 |
## 使用示例
```cpp
#include "Resources/MaterialLoader.h"
#include "Resources/ResourceManager.h"
using namespace XCEngine::Resources;
// 通过 ResourceManager 加载材质
auto materialHandle = ResourceManager::Get().Load<Material>("assets/materials/wood.mat");
if (materialHandle.IsValid()) {
Material* material = materialHandle.Get();
// 使用材质...
}
// 直接使用 MaterialLoader
MaterialLoader loader;
LoadResult result = loader.Load("assets/materials/wood.material");
if (result.IsSuccess()) {
Material* material = static_cast<Material*>(result.GetResource());
// 使用材质...
}
```
## 相关文档
- [Material](../material/material.md)
- [IResourceLoader](../iloader/iloader.md)
- [ResourceManager](../resource-manager/resource-manager.md)