Unity Wwise基础使用

概述

Wwise作为音频引擎,由音频人员处理音频资源后导入Unity工程。Wwise提供Unity插件,控制导入资源播放使用。本章记录Wwise在Unity的使用。

一、环境配置

1.1 下载安装Wwise Launcher


1.2 安装Wwise引擎

内网离线安装若中途报错,删除 C:\Program Files (x86)\Audiokinetic\Data\install-table.json后,重新安装。

1.3 安装Unity插件

若手动指定Unity.exe后出现无法识别版本的问题,需要手动解压离线版本,并将解压后的Wwise文件夹放到Unity工程下。

1.4 创建Wwise工程

1.5 Unity设置

Editor -> Project Setting -> Wwise Editor

设置完成后打开WIndow -> Wwise Picker,可以看到Unity与Wwise工程连接成功。

其它设置参考:


二、Unity Wwise

2.1 基础概念

  • event:Wwise的音效播放通过事件驱动。Wwise可以看做一个状态机,不同事件设置相应的状态。
  • state、switch:相同的event在不同情况下需要有不同处理方式,state与switch的作用类似,都可以标记event的不同状态。不同点在于资源的制作,switch可以直接切换,state必须指定切换的方式。
  • bank:Bank是event的集合或者容器,类似于AB包与资源的关系。想要播放声音,必须要加载相应的Bank。
  • 2D & 3D音效:2D音效以恒定的音量播放,3D音效根据3D空间距离动态控制音量。Wwise中的音效播放都需要传场景对象,对于2D音效来说,播放和接收声音是同一个对象。
  • RTPC:Wwise工程中通过RTPC和特定对象的属性关联,这样就可以通过一个参数精准控制特定属性。常见于特定轨道的音量调整。

2.2 Unity初始化

public void Init()
{
    GameObject global = new GameObject(m_WwiseGlobalPrefabName);
    global.SetActive(false);
    GameObject.DontDestroyOnLoad(global);
    AkInitializer akInitializer = global.AddComponent<AkInitializer>();
    object settingObj = Resources.Load("AkWwiseInitializationSettings");
    if (settingObj != null)
    {
        AkWwiseInitializationSettings settings = settingObj as AkWwiseInitializationSettings;
        akInitializer.InitializationSettings = settings;
        global.SetActive(true);
    }
}

通过AkInitializer组件进行初始化,老版本可能没有InitializationSettings。

2.3 Wwise与Unity播放音效

// 加载Bank
AkBankManager.LoadBank("FirstBank", true, true);

// 通过event播放音效
AkSoundEngine.PostEvent(in_eventID, gameObject, m_CallbackType, finishCallback, null);

// 设置音量
AkSoundEngine.SetGameObjectOutputBusVolume(gameObject, listener, volume);

由于event归属于Bank,必须要先加载Bank才能抛事件。通过AkBankManager或AkBank进行加载。

2.4 清理

AkSoundEngine.ClearBanks(); 


参考

编辑于 2022-07-20 12:10