版本
在大多数用于 Unity 的 Wwise 组件中,有一个 "Trigger On" 属性,从中您可以选择哪个 Unity 通知/事件将触发 Wwise 组件(Event、Switch、State 等)。这个列表只包含在 Unity 中可以做到的一部分。但是,触发系统是可扩展的,且不需要修改集成代码本身。
如果想添加一个新的触发器,您只需编写一个来自于 AkTriggerBase 的 C# 类。从 AkTriggerBase 派生的所有类都将通过反射找到,并添加到 "Trigger On" 下拉列表中。这个类包含一个委托,triggerDelegate(GameObject in_target),当触发器的条件发生时,您必须调用该委托。"目标" 对象是可选的,目前用于碰撞体场合下提供碰撞对象。这使得 Wwise 组件可以在“被撞对象”上发送事件,而不是在碰撞体上发送。
虽然这个系统完全是可选的,但您也可以使用这个系统来触发游戏代码中的音频组件。每当您的触发条件出现在代码中(或者有一个自定义函数),您只需要调用 GetComponent<YourTriggerClass>()
.triggerDelegate(GameObject in_target)。
![]() |
备注: | 目前,AkTriggerBase 子类的最大数量是 32。 |
下面是一个含有自定义函数的示例:
public class TriggerOnGunHit : AkTriggerBase { void Hit() { if(triggerDelegate != null) { triggerDelegate(null); } } }
在您的游戏代码中,您可以加入这段代码:
if (playerIsShot)
{
GetComponent<TriggerOnGunHit>().Hit();
}
任何连接到 TriggerOnGunHit 触发器的 Wwise 组件就可以正常运行了。请注意,在许多简单的情况下,这种做法完全是多余的;您也可以轻松通过 AkSoundEngine.PostEvent
("GunHit", gameObject) 调用基础 Wwise SDK,然后让声音设计师在 Wwise 中处理此事件的效果。