Files
XCEngine/docs/api/resources/audioclip/audio-clip.md

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();
    }
}

相关文档