【音频篇】Unity中使用wwise的常见问题及解决方案

时间:2024-04-14 11:32:55

”音频篇“系列文章记录了我在平时工作中遇到的音频相关的问题。


Wwise,是一种音频中间件。关于音频中间件的可以看这篇文章:什么是音频中间件?。本文内容不是介绍wwise,也不是教大家怎么用它,因为这些东西,上网搜都能搜到。本文内容是水鸡我在游戏中使用wwise时遇到的问题以及解决方案。所以如果没有用过wwise的,这篇文章可以先收藏以后再看。


没有声音

1. 报错信息:Wwise: Event ID not found: xxxxxx

xxxxxx是一段数字,出现这个报错,说明在bank还没有被加载,就调用了PostEvent播放声音,自然声音是播不出来的。

2. 报错信息:Wwise Bank Load Failed

这个原因是因为没有找到bank,所以加载失败了。首先打开wwise,检查对应平台和对应语言下是否有生成banks。
【音频篇】Unity中使用wwise的常见问题及解决方案
然后打开wwiseLauncher,检查对应平台的选项是否有选上。注意Switch和PS4选项需要许可证,一般账户选不了。
【音频篇】Unity中使用wwise的常见问题及解决方案

3. 没有报错

3.1 配置不正确

首先需要检查WwsieEvent有没有被正确配置,图中是正确配置的情况,如果不正确会显示一行红字。
【音频篇】Unity中使用wwise的常见问题及解决方案
通常,当有人跟你反馈没有声音的时候,配置肯定是配了的。如果依然显示不正确,请找到unity菜单的windows/wwise picker,点击Refresh Project。点完了还是显示不正确,说明配置丢了,这是wwise和unity傻逼,目前无解,请找音频师或者策划重新配置。
【音频篇】Unity中使用wwise的常见问题及解决方案

3.2 配置正确

在确认配置正确的情况下依然没有声音,这个时候请尝试使用wwise的调试功能。打开wwise,点击Remote进行调试。

【音频篇】Unity中使用wwise的常见问题及解决方案
选择Profiler打开调试面板。
【音频篇】Unity中使用wwise的常见问题及解决方案
左侧是游戏里都播了哪些Event,在wwise里是哪个音频单元,在哪个GameObject上进行播放,播放的时间。为什么我称之为音频单元?因为wwise里面音频事件处理的并不一定是单一音频文件,它也可以是一组文件。右侧是声音经过了哪些混音处理。
【音频篇】Unity中使用wwise的常见问题及解决方案
如果在调试面板没有找到要播的声音,请检查是否代码里根本没有执行PostEvent
如果在调试面板找到了要播的声音,但是没有听到声音,有以下几种原因:

  • 音量被设置为0
  • 播放声音的位置离listener位置太远
  • 硬件设备问题,比如手机是静音模式,电脑声卡坏了之类的。

如何切换不同语音

为了满足玩家需求,很多游戏都有日语、国语两种语音,提供给玩家切换。这里说一下切换语言的方法:

  • 调用AkBankManager.UnloadBank(bankName) 把相关bank全部卸载
  • 调用AkSoundEngine.SetCurrentLanguage(newLangName) 切换语言
  • 调用AkBankManager.LoadBank(bankName) 重新加载bank

注意切换语言后不能在当前帧立刻加载bank,否则无效。
wwise论坛上这篇文章说的是0.25秒。How do I change a sound-bank at run time ?

我没有进行实际测量,不过不在同一帧进行调用这个还是挺好避免的。我之前项目的切换语言功能是这样设计的:玩家只能在主菜单界面的场景进行切换语言,然后在玩家进入主菜单场景时进行卸载bank,当玩家离开主菜单场景时加载bank。

如果切换语言没有成功,请检查是不是SetCurrentLanguage 里传入的变量和wwise工程里的语言的名称对不上。


暂时先写这么多了,以后想到再更新。


【音频篇】Unity中使用wwise的常见问题及解决方案
既然都看到这里了,不如关注一下吧

关于作者:

  • 水曜日鸡,简称水鸡,ACG宅。曾参与索尼中国之星项目研发,具有2D联网多人动作游戏开发经验。

****博客:https://blog.****.net/j756915370
知乎专栏:https://zhuanlan.zhihu.com/c_1241442143220363264
Q群:891809847