Files
XCEngine/docs/api/resources/audio-loader/load.md

59 lines
1.7 KiB
Markdown
Raw Normal View History

2026-03-20 02:35:35 +08:00
# AudioLoader::Load
## 方法签名
```cpp
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override;
```
## 详细描述
从指定路径加载音频文件,读取文件数据后自动检测音频格式,并创建包含完整音频数据的 `AudioClip` 对象。
**加载流程:**
1. 调用 `ReadFileData(path)` 读取文件数据
2. 若读取失败,返回包含错误信息的 `LoadResult`
3. 调用 `DetectAudioFormat()` 检测音频格式
4. 创建 `AudioClip` 对象并设置路径、名称、GUID
5. 调用 `SetAudioFormat()``SetAudioData()` 设置音频属性
6. 计算内存占用并返回成功结果
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `path` | `const Containers::String&` | 音频文件的完整或相对路径 |
| `settings` | `const ImportSettings*` | 导入设置(当前版本未使用,始终为 `nullptr` |
## 返回值
`LoadResult` - 成功时包含 `AudioClip*` 指针,失败时包含错误信息字符串。
## 示例
```cpp
#include "Resources/AudioLoader.h"
#include "Resources/ResourceManager.h"
using namespace XCEngine::Resources;
AudioLoader loader;
LoadResult result = loader.Load("assets/audio/bgm_music.ogg");
if (result.IsSuccess()) {
AudioClip* audioClip = result.GetResource<AudioClip>();
printf("Loaded: %s\n", audioClip->m_name.CStr());
printf("Format: %d\n", static_cast<int>(audioClip->GetAudioFormat()));
printf("Size: %zu bytes\n", audioClip->m_memorySize);
} else {
printf("Error: %s\n", result.GetError().CStr());
}
```
## 注意事项
- 当前实现 `ParseWAVData()` 方法为空WAV 格式解析逻辑尚未完成
- `settings` 参数当前版本未使用,保留接口兼容性