版本

menu_open

处理用户音乐(BGM)

在许多主机上,可以将游戏音乐替换成用户个人收藏的音乐。在 Wwise 中,此功能几乎是自动完成的。然而,某些平台在实现和行为上有一些差异。

在所有平台上,初始设置是相同的:启动用户音乐时,声音设计师可以标记若干条总线让其静音。这一点通过“Mute for Background Music”复选框来实现。在程序方面,根据具体的平台另有细节处理。

针对 Android 的 BGM 详情

确保对 AkPlatformInitSettings 的 jNativeActivity 成员赋值。只有当用户从音乐播放器应用程序切换到游戏时才会发生 Mute/Unmute(静音/取消静音)操作。这意味着,如果用户音乐自行结束,则不会发生“Unmute”操作。

针对 iOS 的 BGM 详情

如果声音引擎初始化设置中设置了 AudioSession 标志 “MixOther”,则只有当用户从音乐播放器应用程序切换到游戏时才会发生 Mute/Unmute 操作。这意味着,如果用户音乐自行结束,则不会发生“Unmute”操作。在 iOS 8 及更高版本中,如果使用了 AVAudioSessionCategoryAmbient 类别,只要出现应用程序的音频中断(audio interruptions),就会发生游戏音乐静音和取消静音操作。

在启用 DVR 的平台(XBox One 和 PS4)上播放背景音乐。

某些平台具有 DVR 功能,可让游戏玩家记录和发布其游戏过程。对于可能属于游戏音频或用户可更换音乐的一部分的、受版权保护的音乐,这会带来一些法律问题。虽然游戏制作公司有权在他们的游戏中使用该音乐,但终端用户无权以任何形式分发它。因此,平台要求中通常会注明禁止录制用户背景音乐。

针对这个问题,一个高性价比的解决方案(对 CPU 而言)是将音乐和游戏的其他内容分开混音。这通过使用 Secondary Output (二路输出)功能来实现。

在设计工具中设置背景音乐

设计工具中唯一的要求是将音乐对象连通到 Master Secondary Bus 或该总线下的任何其他总线。如果您的工程还要在没有独立 BGM 输出的旧平台上运行,您需要 Unlink(取消链接)该平台的 Output Bus 属性,然后将音乐连通到主层级结构中的另一条总线。

如果游戏还在游戏控制器中播放声音,则您的工程还要将此总线层级结构用于控制器的声音。不用担心控制器的声音中混入音乐或者出现相反情况,这种事情是不会发生的。要做出最终的通路决策,还有一个步骤要通过 Listener/Game Object(听者/游戏对象)配对。此步骤由游戏程序员设置。正如各个游戏玩家不会在他们的各个控制器中混合相同的声音,音乐将发送给内部的一个不同的混音结构。

在游戏代码中设置 BGM 输出

如果游戏中要使用 BGM 输出,则必须手动添加这个输出。这一点通过使用 AK::SoundEngine::AddSecondaryOutput 来完成。使用常规的 Listener / GameObject 概念可以将声音只连通到此设备。游戏必须使用不同于 TV 输出所用的其他 Listener (通常为 0)。请参阅 概念: Listener 了解更多信息。程序员必须也为 Game Object 设置(若干)听者。

有关 示例,请参阅 <Wwise installation path>/SDK/samples/IntegrationDemo/DemoPages/DemoBGM.cpp


此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅