目录
通常,我们可以利用模块化对象(如 Prefab)来将各种类型的信息保存到一起,以此最大限度地减少 Unity 中的冗余数据。就拿 Torch Prefab 来说。它包含了用来描述对象位置、外观和行为的各种组件。在将 AkAmbient 组件添加到 Prefab 后,只要将 Torch(火把)游戏对象添加到场景中就会包含 Torch 声音。当然,我们可以通过 AkEvent 或 AkAmbient 脚本来实现这一点。不过,最好的做法是将 AkAmbient 的 Position Type 设为 MultiPosition 模式。就跟 AkEvent 和 AkAmbient 的 Simple 模式一样,我们可以利用此模式来播放与游戏对象关联的 Event(事件)。更重要的是,在 MultiPosition 模式下,无论将多少 AkAmbient 组件添加到关卡中,都只会生成一个 Event 实例。
接下来,我们将把 AkAmbient 组件添加到 301_Torch Prefab。刚开始将 AkAmbient 设为 Simple 模式,然后再改为 MultiPosition 模式,以此对比下声部实例数的差异。
-
确保目前仍在 AkAmbient Position Types 场景中。
为了熟悉 Torch 声音,我们先在地牢中试听一下。与此同时,连接 Profiler(性能分析器),看下与游戏中 Torch 数量(17 个)对应的当前声部实例数。
-
在 Wwise 的工具栏中,单击 Remote…(远程...)。
-
选中 Wwise Adventure Game (Editor),然后单击 Connect(连接)。
-
在 Unity 中,单击 Play 按钮进入 Play 模式。
-
按下 ESC 进入游戏菜单,然后传送到 Dungeon(地牢)。
-
跑着穿过走廊,仔细听下火把声。
我们注意到,所有 Torch 声音都直接定位在了 Torch 游戏对象上。也就是说,每次从火把旁边经过时声音都会随着距离增大和减小。
-
按下 ESC 打开《WAG》游戏菜单,然后再次单击 Play 按钮退出 Play 模式。
-
在 Wwise 菜单栏中,转到 Layouts(布局),然后选择 Voice Profiler(声部性能分析器)。
接下来,我们通过在 Filter(筛选器)中指派 Ambient_Torch Event 来专门监控该事件。
-
在 Performance Monitor(性能监控器)中,往回拖动时间光标,直到 Voice Inspector(声部检视器)中显示 301_Torch。
下面来看下 Voice Inspector 最左侧的面板。此面板会依据 Voice Monitor 中捕获的信息列出所有活跃的游戏对象和关联的声部。我们注意到,当前有 10 多个使用 Ambient_Torch Event 的声部。接下来,我们将定位类型设为 MultiPosition 模式,来察看一下有何变化。
-
切换回 Unity,然后在 Hierarchy 中搜索 Torch 并选中 301_Torch_01 游戏对象。
在 Hierarchy 中的游戏对象显示为蓝色时,表示其引用 Prefab 素材。Prefab 是游戏对象的模板。在将 Prefab 拖到场景中时,将会创建跟 Prefab 完全相同的游戏对象。以后只要修改 Prefab,就会将所作更改自动应用于由该 Prefab 生成的任何游戏对象上。为了对 Prefab 进行更改,您可以在 Project 视图中将其选中,然后在 Inspector 中执行所需更改。不过,也可在场景中对 Prefab 的游戏对象实施更改,然后将这些更改发送到 Prefab。接下来,我们修改 301_Torch_01 游戏对象上的 AkAmbient,然后将其应用于原始的 Prefab。
如需进一步了解 Prefab,请访问 https://docs.unity3d.com/Manual/Prefabs.html 页面。
-
在 Position Type 属性中,选择 Multi Position_Mode。
接下来,我们要将这些更改发送到原始的 Prefab。为此,需要应用游戏对象上执行了更改的组件。
-
在 Inspector 中,单击“齿轮”图标,然后依次选择 Modified Component > Apply to Prefab '301_Torch',来将所作属性更改发送到 Prefab。
现在,我们将针对 301_Torch_01 游戏对象所作的修改保存到了 301_Torch Prefab 中。如此一来,所有其他 Torch 游戏对象都会沿用相同的属性。
-
在 Wwise 中,单击 Reconnect(重新连接)。
-
在 Unity 中,单击 Play 按钮进入 Play 模式。
-
在游戏菜单中,传送到 Dungeon。
-
跑到地牢入口走廊中,然后再返回,仔细听下火把声。
我们注意到,Torch 声音仍然定位在对应的 Torch 游戏对象上,听起来跟同时播放多个 AkEvent 声部时一样。
-
按下 ESC 打开《WAG》游戏菜单,然后再次单击 Play 按钮退出 Play 模式。
切换回 Wwise,我们注意到 Voice Inspector 最左侧面板中的 Event 实例数从很多个减到了只剩 1 个,而且呈现的音频输出效果并没有变化。在 Voice Inspector 最右侧的面板中,会显示各个火把的 Distance Attenuation。
在此之后,无论将多少火把添加到 Dungeon 中,实例数始终都将保持为 1。因为,我们针对添加到场景中的所有 Prefab 应用了 MultiPosition 模式。正因如此,MultiPosition 模式特别适合与关卡设计师协作。因为将声音嵌入到了对象中,所以无论将其放置或移动到哪里,都不会增加音频占用的资源。
记住,MultiPosition 模式只使用一个实例,所以每个声音位置播放的都是相同的声部。在这种情况下,将无法通过 Randomizer 来让声音随着位置不断变换。 |