Files
XCEngine/docs/api/resources/audioclip/audioclip.md
ssdfasd a1804f4cb0 docs: 更新 resources, rhi, scene 模块及新增 camera-component 方法文档
- resources: 更新 asyncloader, audioclip, mesh-import-settings, texture-loader 文档
- rhi: 更新 opengl render-target-view 文档
- components: 新增 camera-component 全部方法文档 (15个文件)
2026-03-26 02:00:45 +08:00

4.5 KiB
Raw Blame History

AudioClip

命名空间: XCEngine::Resources

类型: class

头文件: XCEngine/Resources/AudioClip/AudioClip.h

描述: 音频片段资源类,管理音频样本数据、格式信息和播放参数。

概述

AudioClip 是 XCEngine 中的音频资源类,继承自 IResource。它管理音频的原始样本数据、采样率、通道数、位深度、时长、格式类型和播放参数。

头文件

#include <XCEngine/Resources/AudioClip/AudioClip.h>

枚举类型

AudioFormat

音频格式枚举。

描述
Unknown 未知格式
WAV WAV 格式
OGG OGG Vorbis 格式
MP3 MP3 格式
FLAC FLAC 无损格式

AudioType

音频类型枚举。

描述
SoundEffect 音效
Music 音乐
Voice 语音
Ambient 环境音

公共方法

构造与析构

方法 描述
AudioClip 默认构造函数
~AudioClip 析构函数

基础属性

方法 描述
ResourceType GetType() const 返回 ResourceType::AudioClip
const Containers::String& GetName() const 获取音频名称
const Containers::String& GetPath() const 获取音频路径
ResourceGUID GetGUID() const 获取全局唯一标识符
IsValid 检查音频是否有效
GetMemorySize 获取内存大小
Release 释放音频引用

音频数据

方法 描述
SetAudioData 设置音频数据(需先设置采样率、通道数、位深度,自动计算时长)
GetAudioData 获取音频数据指针

音频参数

方法 描述
SetSampleRate 设置采样率Hz
GetSampleRate 获取采样率
SetChannels 设置通道数1=单声道, 2=立体声)
GetChannels 获取通道数
SetBitsPerSample 设置位深度8/16/24/32
GetBitsPerSample 获取位深度
SetDuration 设置时长(秒)
GetDuration 获取时长(秒)

格式与类型

方法 描述
SetAudioFormat 设置音频格式
GetAudioFormat 获取音频格式
SetAudioType 设置音频类型
GetAudioType 获取音频类型

3D 和循环

方法 描述
SetIs3D 设置是否为 3D 音频
Is3D 检查是否为 3D 音频
SetLoop 设置是否循环播放
IsLoop 检查是否循环播放

RHI 资源

方法 描述
GetRHIResource 获取 RHI 音频缓冲区
SetRHIResource 设置 RHI 音频缓冲区

实现说明

注意:

  • AudioLoader::Load() 加载 WAV 文件时仅设置格式,不解析 WAV 头信息来设置采样率、通道数和位深度。这些字段需要手动设置或通过 SetAudioData() 的自动计算(需先设置 m_sampleRatem_channelsm_bitsPerSample)。
  • AudioLoader::ParseWAVData() 为 stub始终返回 true。
  • AudioLoader::DetectAudioFormat() 不检测 AIFF/AIF 格式的文件头,仅依赖扩展名判断。

使用示例

#include <XCEngine/Resources/AudioClip/AudioClip.h>
#include <XCEngine/Resources/ResourceManager.h>

using namespace XCEngine::Resources;

// 加载音频
ResourceHandle<AudioClip> sfx = ResourceManager::Get().Load<AudioClip>("sounds/explosion.wav");
ResourceHandle<AudioClip> music = ResourceManager::Get().Load<AudioClip>("music/background.ogg");

// 设置参数
sfx->SetAudioType(AudioType::SoundEffect);
sfx->SetSampleRate(44100);
sfx->SetChannels(2);
sfx->SetBitsPerSample(16);
sfx->SetDuration(1.5f);
sfx->SetLoop(false);

// 3D 音频
sfx->SetIs3D(false);
music->SetIs3D(false);

// 获取信息
uint32_t sampleRate = sfx->GetSampleRate();
float duration = sfx->GetDuration();
bool loop = sfx->IsLoop();

相关文档