menu
版本
2019.1.11.7296
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
Wwise Unity Integration Documentation
|
Unity Integration 提供 Wwise 专用组件,可直接用在 Unity Scene GameObject 上。这些组件可以满足大部分声音设计情境的需求。虽然组件为自定义 C# 脚本,但并不需要通过编程来编辑其公共属性。
将 Wwise 组件添加到 Unity GameObject:
check_circle | 技巧: | 若要快速访问包含所有 Wwise 组件的列表,请在组件的搜索字段中键入 ak。 |
为了将组件添加到游戏中,您可以把 Wwise 对象从 Wwise Picker 拖到 Inspector 中或所加载场景的 Hierarchy 中列出的游戏对象上。
WwiseGlobal 对象是一个包含 Wwise 声音引擎 Initializing 和 Terminating 脚本的游戏对象。在 Editor 工作流中,会将其添加到每一场景,以便在 Editor 中正常预览。在游戏中,只会在第一个场景中创建一个实例。该实例将在整个游戏当中保持有效。在初始化器脚本中,有一些可自定义的选项。
若要禁用此行为,请依次转到 Edit > Wwise Settings,然后取消选中 Create WwiseGlobal GameObject。在此之后,您需要自行将 Initializer 脚本绑定到游戏当中始终有效的对象上。
为了能够正常定位,需要将 Ak Audio Listener 脚本关联到每一场景中的主镜头。在默认情况下,会将听者自动添加到主镜头。若要禁用此行为,请依次转到 Edit > Wwise Settings,然后取消选中 Automatically add Listener to Main Camera。
这个集成还提供了一些类,适用于常见场景以外的大多数应用场景,需要极少量的编程:
AK.Wwise.AuxBus
AK.Wwise.Bank
AK.Wwise.CallbackFlags
AK.Wwise.Event
AK.Wwise.RTPC
AK.Wwise.State
AK.Wwise.Switch
AK.Wwise.Trigger
AK.Wwise.AcousticTexture
本机 WAAPI 客户端可通过 C# API 从 Unity 内部连接到 WAAPI。目前提供 Windows 和 macOS 版本。Wwise Authoring API 会通过 JSON 对象发送消息。在 Unity 中,客户端是通过字符串整合的。您可以根据需要灵活地构建有效的 JSON 字符串,然后将其提供给 WAAPI 客户端。
共有四种方法可以将声音添加到您的游戏中:
AK.Wwise.Event.Post()。
AkSoundEngine.PostEvent()。
在 Unity 的 Timeline 中,可使用自定义 Wwise Track 来触发 Wwise 事件,并设置 Wwise RTPC 值。
Unity Integration 包含一个可用来与 Wwise 设计工具进行交互的简单 WAAPI 客户端。
大多数 Wwise SDK 函数可以通过 AkSoundEngine
类在 Unity 中使用。将它想象为 C++ 命名空间 AK::SoundEngine、
SDK 相比,API 绑定中所做的更改,请参考 pg_limitations。 对于更复杂的情况,您需要从代码中调用 Wwise 函数。在 API 中,所有函数中的 AK::MusicEngine
等等的替代。想了解与原始GameObjectID
被Unity 风格的 GameObject 所替代。在运行时,这个 GameObject 中将自动添加一个 AkGameObj 组件,除非您之前已经手动添加过了。
原生 Wwise API 使用字符串或 ID 来触发 Wwise 工程中的事件和其它有名字的对象。您仍然可以在 C# 环境下这样做,方法是将文件 Wwise_IDs.h
转码为 Wwise_IDs.cs。点击
Assets > Wwise > Convert Wwise SoundBank IDs。为了完成上述操作,您需要安装 Python。
如需将 MIDI 发送到 Wwise,可为 AkMIDIPostArray
类的 AkMIDIPost
成员赋值,并调用以下任一方法:
AkMIDIPostArray.PostOnEvent()
AkSoundEngine.PostMIDIOnEvent()
AK.Wwise.Event.PostMIDI()
以下是一个将 MIDI 消息发送到声音引擎的简单脚本:
您可以通过 C# 脚本来调用 Audio Input 源插件。请参阅 Audio Input Source Plug-in from the Wwise SDK documentation.
以下是一个将测试音发送到 Audio Input 源插件的简单脚本:
在默认情况下,会将 AkGameObj
组件关联到特定的 Unity gameObject
,并使用其变换功能(可选偏置)进行全面定位。这对很多游戏(如第一人称射击游戏)来说基本上就够了。不过,对于采用自定义镜头角度的游戏(如各种第三人称游戏)来说,假如只是简单地将音频听者关联到单个游戏对象(如 Unity 中的主镜头),定位的距离衰减和空间化这两个方面可能会不好协调。其他游戏可能还要给玩家提供别的自定义定位体验。
为此,AkGameObj
组件类允许用户重写定位。通过 GetPosition()、
GetForward()
和 GetUpward()
这三种虚方法,用户可选择继承 AkGameObj
的子类,并使用这些子类组件来灵活地自定义任意数量 Unity gameObject
的定位。
这里有一个简单的示例,展示了如何使用自定义组件来重写默认的 AkAudioListener
行为。对这个整合了 Wwise 的第三人称游戏项目,可移除现有的 AkAudioListener
及其关联的 AkGameObj
。然后,将以下脚本关联到 MainCamera 对象,并关联 AkAudioListener
。最后,指定音频听者位置所要跟随的目标 gameObject
(如玩家角色)。如此一来,所有发声体的距离衰减都会将所选目标 Unity gameObject
的位置作为听者位置(画面内的距离听者),而所有发声体的朝向仍会将主镜头朝向作为听者朝向(画面外的朝向听者)。