目录

警告:此页面上某些受保护的信息未予显示。
若为特定平台的授权用户,请确保已登录相应的帐户。
Wwise SDK 2018.1.11
处理系统专用事件

几乎所有操作系统都有针对以下事件的回调或通知:

  • 按 Home 按钮
  • 将应用程序置于后台/前台
  • 启动/停止用户音乐

Wwise 不会自动处理这些事件。主要原因是某些 OS API 不支持多个回调或通知接收器。因此, Wwise SDK 需要知道这些事件,以避免“吃掉”它们而不能发送给游戏。

有关如何处理用户音乐更换的信息,请阅读 处理用户音乐(BGM)和DVR

将应用程序置于后台/前台

一般来说,所有游戏系统都可以将应用程序置于后台一段时间。Wwise 有三种可能操作,具体取决于您的选择或平台需求:

一般来说,当应用程序位于后台并且使用 Suspend(false) 时,游戏不应调用任何声音引擎 API。发布事件等操作仍有效,但会一直积累,并在系统被唤醒时全部同时播放。为了继续执行音频处理,在从系统收到正确通知时,请先调用 AK::SoundEngine::WakeupFromSuspend(),然后再调用 RenderAudio()。可以在调用 RenderAudio() 之前,让其他事件排队等候。

您应该阅读每个平台相关的制造商文档要求,以选择正确的操作。

Android™

在 Android 中,处理 App Lost/Gain Focus 和 App Pause/Resume 事件非常重要。Google 的要求规定,不在前台的应用程序应使用尽可能少的 CPU(最好完全不使用)。通过调用 Suspend(false) 可以做到这一点。 另请参阅 针对 Android 的 BGM 详情

iOS

Apple 要求,当应用程序位于后台时须使用尽可能少的 CPU。这将由 Wwise 自动处理。 另请参阅 针对 iOS 的 BGM 详情

Mac OS X

Mac 没有官方指南,但须与其他平台一致,应用程序进程不活动时使用 Suspend() 来中断声音。具体会硬暂停(参数为 false)还是活动暂停(参数为 true),取决于游戏实现。

Linux

Linux 没有官方指南,但是它应与其他平台一致,应用程序进程不活动时使用 Suspend() 来中断声音。具体会硬暂停(参数为 false)还是活动暂停(参数为 true),取决于游戏实现。

Windows

虽然 Windows 没有明确的要求,但是应用程序不在前台时将音频静音的做法通常是可取的。为此,在调用 Ak::SoundEngine::Init() 时,您应该将主窗口的 hWnd 提供给 AkPlatformInitSettings 结构。这种情况下,音频线程将保持运行(相当于 Suspend(true) )。这会由 OS 处理。

或者您还可以处理 WM_SHOWWINDOW 消息,在最小化时,执行一些更具体的操作,例如让音频减弱或者直接调用 Suspend()