menu
版本
2018.1.11.6987
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
Wwise SDK 2018.1.11
|
几乎所有操作系统都有针对以下事件的回调或通知:
Wwise 不会自动处理这些事件。主要原因是某些 OS API 不支持多个回调或通知接收器。因此, Wwise SDK 需要知道这些事件,以避免“吃掉”它们而不能发送给游戏。
有关如何处理用户音乐更换的信息,请阅读 处理用户音乐(BGM)和DVR 。
一般来说,所有游戏系统都可以将应用程序置于后台一段时间。Wwise 有三种可能操作,具体取决于您的选择或平台需求:
一般来说,当应用程序位于后台并且使用 Suspend(false) 时,游戏不应调用任何声音引擎 API。发布事件等操作仍有效,但会一直积累,并在系统被唤醒时全部同时播放。为了继续执行音频处理,在从系统收到正确通知时,请先调用 AK::SoundEngine::WakeupFromSuspend(),然后再调用 RenderAudio()。可以在调用 RenderAudio() 之前,让其他事件排队等候。
您应该阅读每个平台相关的制造商文档要求,以选择正确的操作。
在 Android 中,处理 App Lost/Gain Focus 和 App Pause/Resume 事件非常重要。Google 的要求规定,不在前台的应用程序应使用尽可能少的 CPU(最好完全不使用)。通过调用 Suspend(false) 可以做到这一点。 另请参阅 针对 Android 的 BGM 详情 。
Apple 要求,当应用程序位于后台时须使用尽可能少的 CPU。这将由 Wwise 自动处理。 另请参阅 针对 iOS 的 BGM 详情 。
Mac 没有官方指南,但须与其他平台一致,应用程序进程不活动时使用 Suspend() 来中断声音。具体会硬暂停(参数为 false)还是活动暂停(参数为 true),取决于游戏实现。
Linux 没有官方指南,但是它应与其他平台一致,应用程序进程不活动时使用 Suspend() 来中断声音。具体会硬暂停(参数为 false)还是活动暂停(参数为 true),取决于游戏实现。
虽然 Windows 没有明确的要求,但是应用程序不在前台时将音频静音的做法通常是可取的。为此,在调用 Ak::SoundEngine::Init() 时,您应该将主窗口的 hWnd 提供给 AkPlatformInitSettings 结构。这种情况下,音频线程将保持运行(相当于 Suspend(true) )。这会由 OS 处理。
或者您还可以处理 WM_SHOWWINDOW 消息,在最小化时,执行一些更具体的操作,例如让音频减弱或者直接调用 Suspend()。