【音頻篇】Unity中使用wwise的常見問題及解決方案

”音頻篇“系列文章記錄了我在平時工作中遇到的音頻相關的問題。


Wwise,是一種音頻中間件。關於音頻中間件的可以看這篇文章:什麼是音頻中間件?。本文內容不是介紹wwise,也不是教大家怎麼用它,因爲這些東西,上網搜都能搜到。本文內容是水雞我在遊戲中使用wwise時遇到的問題以及解決方案。所以如果沒有用過wwise的,這篇文章可以先收藏以後再看。


沒有聲音

1. 報錯信息:Wwise: Event ID not found: xxxxxx

xxxxxx是一段數字,出現這個報錯,說明在bank還沒有被加載,就調用了PostEvent播放聲音,自然聲音是播不出來的。

2. 報錯信息:Wwise Bank Load Failed

這個原因是因爲沒有找到bank,所以加載失敗了。首先打開wwise,檢查對應平臺和對應語言下是否有生成banks。
在這裏插入圖片描述
然後打開wwiseLauncher,檢查對應平臺的選項是否有選上。注意Switch和PS4選項需要許可證,一般賬戶選不了。
在這裏插入圖片描述

3. 沒有報錯

3.1 配置不正確

首先需要檢查WwsieEvent有沒有被正確配置,圖中是正確配置的情況,如果不正確會顯示一行紅字。
在這裏插入圖片描述
通常,當有人跟你反饋沒有聲音的時候,配置肯定是配了的。如果依然顯示不正確,請找到unity菜單的windows/wwise picker,點擊Refresh Project。點完了還是顯示不正確,說明配置丟了,這是wwise和unity傻逼,目前無解,請找音頻師或者策劃重新配置。
在這裏插入圖片描述

3.2 配置正確

在確認配置正確的情況下依然沒有聲音,這個時候請嘗試使用wwise的調試功能。打開wwise,點擊Remote進行調試。

在這裏插入圖片描述
選擇Profiler打開調試面板。
在這裏插入圖片描述
左側是遊戲裏都播了哪些Event,在wwise裏是哪個音頻單元,在哪個GameObject上進行播放,播放的時間。爲什麼我稱之爲音頻單元?因爲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工程裏的語言的名稱對不上。


暫時先寫這麼多了,以後想到再更新。



既然都看到這裏了,不如關注一下吧

關於作者:

  • 水曜日雞,簡稱水雞,ACG宅。曾參與索尼中國之星項目研發,具有2D聯網多人動作遊戲開發經驗。

CSDN博客:https://blog.csdn.net/j756915370
知乎專欄:https://zhuanlan.zhihu.com/c_1241442143220363264
Q羣:891809847

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章