一陣機槍掃射,船艙被無情炮火攻擊的滿目瘡痍,艙內的玻璃和物品散落滿地,子彈擊中玻璃發出清脆的碎裂聲,有的擊中艙門發出金屬的反彈聲。這麽多種的聲音是怎麽在遊戲內呈現和的呢?
Switch是Wwise中GameSync的其中之一,為事件容器提供不同的聲音類別組態,透過使用Switch可以很好的將許多相同種類的音效分區管理,相當於Parameter有LabelName的事件容器。
我們有很多音效其實在分類上相當接近,像走路時發出腳步聲就會依據不同的材質而播放不同對應的聲音,如果每個音效都新建一個事件,那專案一旦越來越大時,整個資料結構就會顯得相對臃腫,所以有Swtich的幫忙可以讓我們把這些不同聲音但性質近似的事件整合成一個。
具體在流程內呼叫State的方式有很多種,在這邊我們簡單介紹其中兩種。在Unity裡面,我們可以透過以下方式來調用State組件。
public void SetState_A_ByName()
{
AkSoundEngine.SetState("FX_Group","High_Enhanced");
}
使用字串來設定State,如果企劃習慣使用表單控管聲音素材,可以採用這個方式。
public AK.Wwise.State state;
public void SetState_B_ByID()
{
var GroupID = state.GroupId;
var StateID = state.Id;
print("GroupID = " + GroupID +" / " +"StateID = " + StateID);
AkSoundEngine.SetState(GroupID,StateID);
}
使用integer ID來設定State,如果技術有public Ak.wwise.state到Inspector視窗讓企劃使用,則可以採用這個方式。
Music From SONUSCORE – Champions Of Darkness (Full) (Tilman Sillescu)
回到一開始的引言,原來用 State 處理從高處瞬間落入水面的聲音效果是這麼簡單!只要在原本和想要切換的狀態之間,設定不同的 LPF 參數和需要衰減的音量就可以輕鬆完成。
可能有人會問:State 和 RTPC 的功能有什麼不同?其實,兩者確實有些差異。RTPC 更像是調整一個連續的數值,表現線性的變化(當然也可以做成階段性)。它控制的參數和屬性略有不同,而且一條 RTPC 一次只能變更一個參數。
相比之下,State 更傾向於整合這些單一項目,可以批量更改 Event 或 Bus 的聲音屬性,並且可以簡單地通過調用 SetState 來完成聲音功能的切換。因此,對於大方向上的調整,建議使用 State 組件,而在細節上的表現則推薦使用 RTPC。