目录

Wwise Unreal Integration Documentation
常见问题解答

问: 我在 Windows 系统下尝试通过设置 Remote Build Options 来针对 iOS 构建工程,结果构建失败了并且显示以下错误消息:PackagingResults: Error: 'AK/AkWwiseSDKVersion.h' file not found。请问有没有办法可以正常地使用 Wwise 来针对 iOS 远程地构建 UE4 工程?
答: 该错误的原因是在尝试通过 Windows 系统构建 iOS 工程时没有将一些必要的文件复制到远程的 macOS 系统。若要解决此问题,请添加 RsyncProject.txt 文件以告知 UE4 从 /Build/Rsync/ 路径下复制这些必要的文件。RsyncProject.txt 文件的内容应为:

+ /Plugins/Wwise/ThirdParty/include/**
+ /Plugins/Wwise/ThirdParty/iOS/**

问: 在编辑或通过 Unreal Editor 生成 Bank 时会将其生成到哪里?
答: 在默认情况下,会将其生成到以下位置:

UE4/[GameName]/Content/WwiseAudio/[Platform]

有些包含语言资源的 Bank 可能会生成到特定于语言的文件夹中。

问: 我发现通过 Wwise 设计工具生成的 Bank 要比通过 Unreal Editor 生成的少。这是为什么?
答: 在导入 SoundBank 定义文件时,Unreal 可能会要求 Wwise 生成 Wwise 工程中没有的 Bank。若希望将 Unreal 生成的 Bank 保存到 Wwise 工程中,请在导入 SoundBank 定义文件时添加命令行参数 -Save

问: 我能使用 SoundEngine 调试库来调试代码吗?
答: 在默认情况下,Unreal Engine 不使用 C 运行时调试库,但是 Wwise 会使用该库。您这样操作的话在调试时可能会导致链接错误。正因如此,Wwise Unreal Integration 才会默认使用配置文件库。若想针对 Wwise 调试库构建链接,请直接在以下文件中将 bDebugBuildsActuallyUseDebugCRT 变量设为 true<UE4_ROOT>/Engine/Source/Programs/UnrealBuildTool/Configuration/BuildConfiguration.cs

问: 我无法连接 Xbox One 上运行的游戏,并在日志中收到以下错误消息:“Could not find Wwise network ports in AppxManifest. Network communication will not be available.”。请问如何才能将 Wwise 设计工具连接到游戏。
答: 您必须确保将所需 Wwise 网络端口添加到游戏的 AppxManifest.xml 文件。为此,请务必在工程设置 (Edit > Project Settings) 中填写以下 Xbox One 平台设置:

针对 Secure Socket Descriptions 使用所示 Xbox One 平台设置
针对 Secure Device Associations 使用所示 Xbox One 平台设置

在此之后,<GAME>/Config/XboxOne/XboxOneEngine.ini 应当会包含以下代码行:

+SecureSocketDescriptions=(SecureSocketName="WwiseDiscoverySocket",bAvailableInShippingBuilds=False,SecureSocketProtocol=Udp,SecureSocketPortRange="24024",bCanInitiateConnections=True,bCanAcceptConnections=True,bCanSendChatData=False,bCanReceiveChatData=False,bCanSendGameData=False,bCanReceiveGameData=False,bCanSendDebugData=True,bCanReceiveDebugData=True,bCanSendInsecureData=False,bCanReceiveInsecureData=False)
+SecureSocketDescriptions=(SecureSocketName="WwiseCommandSocket",bAvailableInShippingBuilds=False,SecureSocketProtocol=Tcp,SecureSocketPortRange="24025",bCanInitiateConnections=True,bCanAcceptConnections=True,bCanSendChatData=False,bCanReceiveChatData=False,bCanSendGameData=False,bCanReceiveGameData=False,bCanSendDebugData=True,bCanReceiveDebugData=True,bCanSendInsecureData=False,bCanReceiveInsecureData=False)
+SecureSocketDescriptions=(SecureSocketName="WwiseNotificationSocket",bAvailableInShippingBuilds=False,SecureSocketProtocol=Tcp,SecureSocketPortRange="24026",bCanInitiateConnections=True,bCanAcceptConnections=True,bCanSendChatData=False,bCanReceiveChatData=False,bCanSendGameData=False,bCanReceiveGameData=False,bCanSendDebugData=True,bCanReceiveDebugData=True,bCanSendInsecureData=False,bCanReceiveInsecureData=False)
+SecureDeviceAssociations=(SecureDeviceAssociationName="WwiseDiscovery",bAvailableInShippingBuilds=False,InitiatorSocketDescriptionName="WwiseDiscoverySocket",AcceptorSocketDescriptionName="WwiseDiscoverySocket",bCanInitiateFromConsole=True,bCanAcceptOnConsole=True,bCanInitiateFromXboxLiveCompute=True,bCanAcceptOnXboxLiveCompute=True,bCanInitiateFromWindowsDesktop=True,bCanAcceptOnWindowsDesktop=True,bCanInitiateFromOtherDevices=True,bCanAcceptOnOtherDevices=True)
+SecureDeviceAssociations=(SecureDeviceAssociationName="WwiseCommand",bAvailableInShippingBuilds=False,InitiatorSocketDescriptionName="WwiseCommandSocket",AcceptorSocketDescriptionName="WwiseCommandSocket",bCanInitiateFromConsole=True,bCanAcceptOnConsole=True,bCanInitiateFromXboxLiveCompute=True,bCanAcceptOnXboxLiveCompute=True,bCanInitiateFromWindowsDesktop=True,bCanAcceptOnWindowsDesktop=True,bCanInitiateFromOtherDevices=True,bCanAcceptOnOtherDevices=True)
+SecureDeviceAssociations=(SecureDeviceAssociationName="WwiseNotification",bAvailableInShippingBuilds=False,InitiatorSocketDescriptionName="WwiseNotificationSocket",AcceptorSocketDescriptionName="WwiseNotificationSocket",bCanInitiateFromConsole=True,bCanAcceptOnConsole=True,bCanInitiateFromXboxLiveCompute=True,bCanAcceptOnXboxLiveCompute=True,bCanInitiateFromWindowsDesktop=True,bCanAcceptOnWindowsDesktop=True,bCanInitiateFromOtherDevices=True,bCanAcceptOnOtherDevices=True)

有关如何针对 Xbox One 修改 AppxManifest 文件的详细信息,请参阅 Unreal Engine 文档。

问: 我在将游戏部署到 iOS、XboxOne 或 Switch 设备时游戏出现卡顿。这是为什么?
答: 您需要禁用 Unreal Engine 内置音频系统。为此,请按照以下平台相关说明执行相应操作:

平台 说明
iOS <UE4_ROOT>/Engine/Config/iOS/IOSEngine.ini 中,将
AudioDeviceModuleName=IOSAudio
替换为
AudioDeviceModuleName=
XboxOne <UE4_ROOT>/Engine/Config/XboxOne/XboxOneEngine.ini 中,将
AudioDeviceModuleName=XAudio2
AudioMixerModuleName=AudioMixerXAudio2
替换为
AudioDeviceModuleName=
AudioMixerModuleName=
Switch <UE4_ROOT>/Engine/Config/switch/BaseSwitchEngine.ini 中,将
AudioDeviceModuleName=SwitchAudio
替换为
AudioDeviceModuleName=

问: 在运行打包好的游戏时无法播放部分或全部声音。这是为什么?
答: 若未启用 新增功能:Event-Based Packaging ,则 Wwise 插件会将 SoundBank 生成到游戏内容文件夹内的 WwiseAudio 文件夹中。由于 Unreal 无法识别 .bnk 文件,游戏的打包设置中 WwiseAudio 文件夹被添加为 Additional non-asset directory to package(另外打包的非资源目录)。因此,不可将 Unreal .uasset 文件(包括 AkAudioEvent 和 AkAudioBank)放在 WwiseAudio 文件夹中。这样会错误地打包两次。

若启用了 新增功能:Event-Based Packaging ,则可能会遇到 已知问题 WG-48803。若在 Event 中使用了 “Post Event” Action,则打包好的游戏中可能会找不到所发送的 Event。另外,若启用了 拆分 Switch Container Media 功能并在 Event 中使用了 “Set Switch” 或 “Set State” Action,则可能会不打包某些媒体。为此,可禁用 拆分 Switch Container Media 功能,直到解决 WG-48803 问题。