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

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

  • 按 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 详情

macOS

macOS 并没有相关的官方规定,但最好跟其他平台保持一致:在应用程序进程处于非活跃状态时,使用 Suspend() 删减声音。具体会硬暂停(参数为 false)还是活动暂停(参数为 true),取决于游戏实现。

Linux

Linux 并没有相关的官方规定,但最好跟其他平台保持一致:在应用程序进程处于非活跃状态时,使用 Suspend() 删减声音。具体会硬暂停(参数为 false)还是活动暂停(参数为 true),取决于游戏实现。

Windows

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

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

UWP

虽然 UWP 没有明确要求,但应用程序不在前台时最好将音频静音。为此,可分别在 CoreApplication.EnteredBackground 和 CoreApplication.LeavingBackground 事件处理程序中调用 Suspend()WakeupFromSuspend()


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅