第 5 课

目录

Game Parameter

Switch(切换开关)的作用域为某个特定游戏对象,State(状态)的作用域为全局域,而 Game Parameter(游戏参数)则在两种情形下都适用。正如前面“利用 Wwise 专有属性设置 Game Parameter”章节所述,在声明 Game Parameter 属性之后,我们可以自由选用 SetValue() 或 SetGlobalValue() 函数。为了便于演示,我们来看下如何针对各个 Evil Head(大头怪)将 Enemy_EvilHead_MovementSpeed Game Parameter 的作用域设在特定游戏对象上。

  1. 在 Unity 菜单栏中,依次转到 Audiokinetic > Certification > 301 > Lesson 5,然后选择 Understanding Global and Game Object Scope

    在此场景中,冒险家将会被三个 Evil Head 包围。在其中一个 Evil Head 试图攻击 Player 时,它会执行一系列动作。首先,它会将视线转向冒险家,流露出将要发起攻击的意图。然后,它会冲向冒险家,并在与其遭遇时猛咬一口。每个动作都配有相应的提示声音,这样玩家不用看就知道它们就在附近。除此之外,还会循环播放 Hover(盘旋)声音,以此不断告知听者 Evil Head 相对于 Main Camera 的位置。作为某种隐秘的音频提示,我们为 EvilHead_Hover_LP Sound SFX(音效)应用了 Wwise Tremolo Effect(效果器),并使用 RTPC 单独地将频率映射到了各个 Evil Head 的速度。这样是为了让 Player 能够及时获知 Evil Head 的当前行为。无论要跟多少 Evil Head 战斗,只需一个 Game Parameter 就够了。接下来,我们试玩游戏并连接 Wwise 来使用 Game Object Profiler 进行监控,以便更好地理解如何针对特定游戏对象来使用 Game Parameter。

  2. 在 Wwise 菜单栏中,转到 Layouts(布局),然后选择 Game Object Profiler(游戏对象性能分析器)。

    在连接之前,我们需要将监视对象限定在 Evil Head 和 Enemy_EvilHead_MovementSpeed 上。在 Game Object Profiler 布局的 Game Object Explorer 中,可在 Game Objects 选项卡内查看所有游戏对象,并在 Watches 选项卡内选择要分析的游戏对象。

  3. 在 Game Object Explorer(游戏对象资源管理器)中,选择 Watches(监视)。

    Training Area(训练场)内的三个 Evil Head 将会采用相同的名称。为此,我们可以直接为其指定一个共有的名称。在此之后,每个 Evil Head 都会显示相应的 Game Parameter。假如刚刚完成上节课程,您将会看到之前指派的 Global Game Object,所以必须先清除列表中的所有内容。

  4. 单击 Clear List(清空列表)。

  5. 单击 Yes(是)确认。

  6. 在 Watches 选项卡中,单击选择器按钮 [>>],然后选择 Game Object Name(游戏对象名称)。

  7. 在 Watch 列中,键入 EvilHead 并按下 Enter。

    现在我们指定了要查看的游戏对象,接下来还要指定 Game Parameter。在此之前,必须清空 Game Sync Watches。

  8. 在 Game Sync Monitor(游戏同步器监控器)中,选中 Game Sync Watches(游戏同步器监视)中的所有现有元素,然后单击 Remove(移除)。

  9. 单击 Add…(添加...)。

  10. 选中 Enemy_EvilHead_MovementSpeed Game Parameter,然后单击 OK(确定)。

    这样的话就可以监视各个 Evil Head 的 Enemy_EvilHead_MovementSpeed Game Parameter 了。接下来,我们连接游戏。因为只是为了测试一下,所以最好避免玩家被攻击致死。

  11. 单击 Play 按钮进入场景,然后按下 ESC 打开《WAG》游戏菜单,并选中 GOD MODE(上帝模式)。

  12. 在 Wwise 工具栏中,单击 Remote…(远程...),然后选中 Wwise Adventure Game (Editor),并单击 Connect(连接)。

  13. 至少避开 Evil Head 五到十次攻击,不过不妨时不时砍它们几下。

  14. 退出 Play 模式,然后切换回 Wwise。

[备注]

注意不要跑向 Village!村庄受魔法保护,EvilHead 一靠近就会死。

在 Wwise 的 Game Object Profiler 中,我们会看到三个坐标图,分别对应一个 Evil Head。

每次 Evil Head 发起冲锋都会显示一条代表加速移动的陡升攻击曲线。在 Evil Head 停止冲锋时,曲线会慢慢下降,直到 Evil Head 再次准备发起攻击。曲线中骤然上升的部分表示 Evil Head 因受到武器攻击而被打断。您可能注意到了,各个 Game Object 的 Game Parameter 曲线并不是完全一样的。这是因为它们分别代表了不同 Evil Head 的行为。从下面的 SetMovementSpeed() 函数可以看出,Enemy_EvilHead_MovementSpeed Game Parameter 使用的是 SetValue() 函数。

 
private void SetMovementSpeed(float speed) {
    MovementRTPC.SetValue(gameObject, speed);
}

在上面的函数中,我们将 gameObject 和 speed 变量发送给了 SetValue() 函数。其中,speed 变量负责设置 Game Parameter,gameObject 游戏对象负责发送 Enemy_EvilHead_Hover Event。

[备注]

在同时针对全局和游戏对象使用 Game Parameter 时,基于游戏对象的函数 SetValue() 会始终覆盖基于特定游戏对象的全局函数 SetGlobalValue()。就拿基于全局作用域的 Time_of_Day Game Parameter 来说。假如另一脚本要针对同一游戏对象(如 Woodlands Ambience)使用 SetValue() 函数,SetValue() 会直接接管,而 Woodlands Ambience 将只会受游戏对象定义的 Game Parameter 值影响。如此一来,无论再对基于全局作用域的 Time_of_Day Game Parameter 执行任何更改,都不会影响到 Woodlands Ambience。


此页面对您是否有帮助?