mute
设置静音状态
mute: 是 SUDRTGameAudioSession 协议中的音频开关方法。它用于在软件层面上立即开启或关闭当前游戏实例的所有音频输出。该方法提供了一个全局性的“一键禁音”功能,常用于 App 切换至后台、用户开启免打扰模式或触发特定业务逻辑(如接听电话)的场景。
方法声明
objc
/**
* 设置游戏音频静音或恢复播放。
* @param mute YES 表示立即静音;NO 表示恢复之前的音量播放。
*/
- (void)mute:(BOOL)mute;运行行为
- 全局拦截:当参数为
YES时,SDK 会切断所有游戏音轨的输出。这不影响游戏逻辑的运行,仅阻断音频流向系统混音器。 - 音量保持:调用
mute:YES并不会修改VolumeFactor的值。当重新调用mute:NO恢复声音时,游戏音量将自动回到静音前的缩放比例。 - 状态隔离:此静音开关仅对当前 SDK 实例有效,不会影响 iOS 系统(AVAudioSession)中其他 App 的声音播放。
- 非持久化:该状态通常随游戏实例的销毁而失效。如果希望玩家下次进入游戏依然保持静音,App 侧需自行记录该配置。
代码示例
在 App 监听到系统电话呼入时,自动静音游戏:
objc
- (void)handleIncomingCall {
// 1. 业务逻辑触发时,立即静音游戏
if (![self.audioSession isMute]) {
[self.audioSession mute:YES];
NSLog(@"检测到外部干扰,游戏已自动静音");
}
}
- (void)onMuteToggleChanged:(UISwitch *)sender {
// 2. 根据 UI 开关状态设置静音
[self.audioSession mute:sender.isOn];
}注意事项
- 与硬件静音的区别:该方法控制的是“软件静音”。如果用户通过 iPhone 侧边的物理静音键开启了静音,即便调用
mute:NO,游戏可能依然无声(取决于SUDRT_KEY_AUDIO_OBEY_MUTE_SWITCH的配置)。 - 性能建议:在短时间内频繁调用
mute:可能会导致底层的音频管线重复初始化。建议在 UI 层做好防抖处理。 - 状态查询:在执行逻辑前,可以先通过
isMute方法判断当前状态,避免重复设置同一状态。