Files
XCEngine/docs/api/components/audio-source-component/audio-source-component.md
ssdfasd f5a34f8adc docs: 重构 API 文档 - components 和 scene 模块
- components: 修复英文标题为中文,添加缺失组件文档
  - 新增 camera-component, light-component, audio-source-component, audio-listener-component 类总览
  - 修复 get-position.md 格式
  - 更新 components.md 模块总览
- scene: 修复方法文档格式,新增缺失方法
  - 修复 find.md, create-game-object.md 英文标题
  - 新增 FindByID, SerializeToString, DeserializeFromString 方法文档
  - 更新 scene.md 类总览方法列表
2026-03-26 01:50:27 +08:00

4.0 KiB
Raw Blame History

AudioSourceComponent

命名空间: XCEngine::Components

类型: class

头文件: XCEngine/Components/AudioSourceComponent.h

描述: 音频源组件负责声音播放、3D 空间化、衰减和多普勒效应。

概述

AudioSourceComponent 是 XCEngine ECS 系统中的音频源组件,用于在场景中播放声音。它支持 3D 空间化、声音衰减、多普勒效应、混响区域混合等功能。该组件需要配合 AudioListenerComponent 使用来接收声音并进行音频处理。

公共方法

播放控制

方法 描述
Play 开始播放音频
Pause 暂停播放
Stop 停止播放
IsPlaying 检查是否正在播放
IsPaused 检查是否已暂停

音频剪辑

方法 描述
SetClip 设置音频剪辑
GetClip 获取当前音频剪辑

音频属性

方法 描述
SetVolume 设置音量
GetVolume 获取音量
SetPitch 设置音调
GetPitch 获取音调
SetPan 设置平移
GetPan 获取平移
SetLooping 设置循环播放
IsLooping 检查是否循环播放

3D 空间化

方法 描述
SetSpatialize 设置是否启用 3D 空间化
IsSpatialize 检查是否启用 3D 空间化
Set3DParams 设置 3D 音频参数
Get3DParams 获取 3D 音频参数
SetDopplerLevel 设置多普勒效应等级
GetDopplerLevel 获取多普勒效应等级
SetSpread 设置扩散角度
GetSpread 获取扩散角度
SetReverbZoneMix 设置混响区域混合
GetReverbZoneMix 获取混响区域混合

输出混音器

方法 描述
SetOutputMixer 设置输出混音器
GetOutputMixer 获取输出混音器

播放时间

方法 描述
SetTime 设置播放位置
GetTime 获取当前播放位置
GetDuration 获取音频总时长

能量检测

方法 描述
GetEnergy 获取当前能量值
StartEnergyDetect 开始能量检测
StopEnergyDetect 停止能量检测
IsEnergyDetecting 检查是否正在能量检测

使用示例

#include <XCEngine/Components/AudioSourceComponent.h>
#include <XCEngine/Components/GameObject.h>
#include <XCEngine/Resources/AudioClip/AudioClip.h>

using namespace XCEngine::Components;

void PlaySound(GameObject* audioObject) {
    auto audioSource = audioObject->AddComponent<AudioSourceComponent>();
    
    audioSource->SetVolume(0.8f);
    audioSource->SetPitch(1.0f);
    audioSource->SetLooping(false);
    audioSource->SetSpatialize(true);
    
    audioSource->Play();
}

void Setup3DAudio(GameObject* audioObject) {
    auto audioSource = audioObject->AddComponent<AudioSourceComponent>();
    
    Audio::Audio3DParams params;
    params.dopplerLevel = 1.0f;
    params.spread = 0.0f;
    params.reverbZoneMix = 1.0f;
    audioSource->Set3DParams(params);
}

相关文档