# AudioSystem **命名空间**: `XCEngine::Audio` **类型**: `class (singleton)` **头文件**: `XCEngine/Audio/AudioSystem.h` **描述**: 音频系统单例,管理所有音频源、音频后端和监听器状态。 ## 概述 AudioSystem 是 XCEngine 音频模块的核心单例类,负责管理整个音频子系统的生命周期。它维护音频监听器(listener)的 3D 变换和速度信息,注册和管理所有活动的音频源(AudioSourceComponent),并通过配置的 IAudioBackend 实现进行实际的音频输出。AudioSystem 每帧调用 Update 方法处理音频源的 3D 空间化计算和混音。 ## 单例访问 | 方法 | 描述 | |------|------| | `static AudioSystem& Get()` | 获取音频系统单例实例 | ## 公共方法 | 方法 | 描述 | |------|------| | [`Initialize`](initialize.md) | 初始化音频系统 | | [`Shutdown`](shutdown.md) | 关闭音频系统 | | [`Update`](update.md) | 每帧更新音频系统状态 | | [`SetBackend`](set-backend.md) | 设置音频后端实现 | | [`GetBackend`](get-backend.md) | 获取当前音频后端 | | [`GetCurrentDevice`](get-current-device.md) | 获取当前音频设备名称 | | [`SetDevice`](set-device.md) | 设置音频设备 | | [`GetAvailableDevices`](get-available-devices.md) | 获取可用音频设备列表 | | [`GetMasterVolume`](get-master-volume.md) | 获取主音量 | | [`SetMasterVolume`](set-master-volume.md) | 设置主音量 | | [`IsMuted`](is-muted.md) | 检查是否静音 | | [`SetMuted`](set-muted.md) | 设置静音状态 | | [`ProcessAudio`](process-audio.md) | 处理音频数据 | | [`SetListenerTransform`](set-listener-transform.md) | 设置监听器变换 | | [`SetListenerVelocity`](set-listener-velocity.md) | 设置监听器速度 | | [`GetListenerPosition`](get-listener-position.md) | 获取监听器位置 | | [`GetListenerRotation`](get-listener-rotation.md) | 获取监听器旋转 | | [`GetListenerVelocity`](get-listener-velocity.md) | 获取监听器速度 | | [`RegisterSource`](register-source.md) | 注册音频源 | | [`UnregisterSource`](unregister-source.md) | 注销音频源 | | [`GetStats`](get-stats.md) | 获取音频系统统计信息 | ## 内部方法 | 方法 | 描述 | |------|------| | `ProcessSource()` | 处理单个音频源的音频数据(私有) | ## 使用示例 ```cpp #include #include using namespace XCEngine::Audio; void SetupAudio() { AudioConfig config; config.sampleRate = 48000; config.channels = 2; config.bitsPerSample = 16; config.speakerMode = SpeakerMode::Stereo; AudioSystem::Get().SetBackend(std::make_unique()); AudioSystem::Get().Initialize(config); } void GameLoop(float deltaTime) { Math::Vector3 listenerPos = mainCamera->GetPosition(); Math::Quaternion listenerRot = mainCamera->GetRotation(); AudioSystem::Get().SetListenerTransform(listenerPos, listenerRot); AudioSystem::Get().Update(deltaTime); } void CleanupAudio() { AudioSystem::Get().Shutdown(); } ``` ## 相关文档 - [Audio 模块总览](../audio.md) - Audio 模块总览 - [IAudioBackend](../i-audio-backend/i-audio-backend.md) - 音频后端接口 - [AudioConfig](../audio-config/audio-config.md) - 音频配置