59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
|
|
# 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` 参数当前版本未使用,保留接口兼容性
|