3.3 KiB
3.3 KiB
AudioClip
命名空间: XCEngine::Resources
类型: class
描述: 音频片段资源类,管理音频样本数据、格式信息和播放参数。
概述
AudioClip 是 XCEngine 中的音频资源类,继承自 IResource。它管理音频的原始样本数据、采样率、通道数、位深度、时长、格式类型和播放参数。AudioClip 支持 WAV、OGG、MP3、FLAC 等多种音频格式,可用于音效、音乐、语音和环境音等不同用途。
公共方法
| 方法 | 描述 |
|---|---|
AudioClip |
构造函数 |
~AudioClip |
析构函数 |
GetType |
获取资源类型 |
GetName |
获取音频名称 |
GetPath |
获取音频路径 |
GetGUID |
获取全局唯一标识符 |
IsValid |
检查音频是否有效 |
GetMemorySize |
获取内存大小 |
Release |
释放音频资源 |
SetAudioData |
设置音频数据 |
GetAudioData |
获取音频数据 |
SetSampleRate |
设置采样率 |
GetSampleRate |
获取采样率 |
SetChannels |
设置通道数 |
GetChannels |
获取通道数 |
SetBitsPerSample |
设置位深度 |
GetBitsPerSample |
获取位深度 |
SetDuration |
设置时长 |
GetDuration |
获取时长 |
SetAudioFormat |
设置音频格式 |
GetAudioFormat |
获取音频格式 |
SetAudioType |
设置音频类型 |
GetAudioType |
获取音频类型 |
SetIs3D |
设置是否为 3D 音频 |
Is3D |
检查是否为 3D 音频 |
SetLoop |
设置是否循环播放 |
IsLoop |
检查是否循环播放 |
GetRHIResource |
获取 RHI 音频缓冲区 |
SetRHIResource |
设置 RHI 音频缓冲区 |
使用示例
#include "Resources/AudioClip.h"
#include "Resources/ResourceManager.h"
#include "Resources/ResourceFileSystem.h"
using namespace XCEngine::Resources;
AudioClip* CreateExplosionSound() {
AudioClip* clip = new AudioClip();
auto wavData = ResourceFileSystem::Get().ReadResource("sounds/explosion.wav");
clip->SetAudioData(wavData);
clip->SetSampleRate(44100);
clip->SetChannels(2);
clip->SetBitsPerSample(16);
clip->SetDuration(1.5f);
clip->SetAudioFormat(AudioFormat::WAV);
clip->SetAudioType(AudioType::SoundEffect);
clip->SetLoop(false);
clip->SetIs3D(false);
return clip;
}
void PlaySoundEffect() {
ResourceHandle<AudioClip> sfx = ResourceManager::Get().Load<AudioClip>("sounds/explosion.wav");
if (sfx->IsValid()) {
uint32_t sampleRate = sfx->GetSampleRate();
float duration = sfx->GetDuration();
bool loop = sfx->IsLoop();
AudioFormat format = sfx->GetAudioFormat();
AudioType type = sfx->GetAudioType();
}
}