第 4 课

目录

指派和发送 Wwise 专有 Event

[备注]

在开始学习本节课程之前,请务必先完成前面的“创建 Wwise 专有 Event 属性”章节。

接下来,我们使用 Start() 函数来发送 Event(事件)。该函数将在运行游戏时调用一次。在编写脚本时,可通过在属性名称后键入句点 . 来访问类属性的函数、变量或属性。在上节课程中,您可能注意到了,此时 Visual Studio 将会显示与类相关的选项列表以供快速插入内容。

  1. Start() 函数中,键入 MyEvent,并在其之后添加一个句点 .

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event MyEvent;
        // 使用此函数进行初始化。
        void Start () {
            MyEvent.
        }
        
        // 每帧调用 Update 函数一次。
        void Update () {
        
        }
    }

    这段代码会告知 Unity 我们要针对 Event 执行某项操作。

    在按下句点后,将会显示下拉菜单。在该下拉菜单中,Visual Studio 收集了一系列可用于 AK.Wwise.Event 类的函数和变量。

    假如代码编辑器中没有显示下拉菜单,您可以按照以下步骤直接手动键入。我们将使用 Post() 函数来播放 Event。

  2. MyEvent. 之后,键入或双击 Post()

    public AK.Wwise.Event MyEvent;
    // 使用此函数进行初始化。
    void Start () {
        MyEvent.Post()
    }

    目前函数调用还不完整。通过将鼠标悬停在函数上,我们会获得一条有关缺失内容的帮助消息。

    这条消息会提供很多信息,但是归根结底,该函数至少需要一个用来触发声音的游戏对象。在此,我们将针对与脚本绑定的同一游戏对象(Player 游戏对象)来触发声音,所以直接键入以下内容即可,无需指定特定的游戏对象。

  3. Post() 的圆括号中,键入 gameObject

    public AK.Wwise.Event MyEvent;
    // 使用此函数进行初始化。
    void Start () {
        MyEvent.Post(gameObject)
    }

    最后,添加一个分号来结束该代码行。这将是构建脚本的最后一步,所以最好浏览一遍刚才编写的脚本,确保没有忘记添加分号和右大括号。

  4. MyEvent.Post(gameObject) 之后,添加一个分号 ;

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event MyEvent;
        // 使用此函数进行初始化。
        void Start () {
            MyEvent.Post(gameObject);
        }
        
        // 每帧调用 Update 函数一次。
        void Update () {
        
        }
    }

    搞定!接下来,我们便可在 Inspector 中指派 Event,并在启动游戏时针对 Player 游戏对象发送该 Event。下面来试试吧。

  5. 保存脚本,然后在 Unity Inspector 中,转到 PostWwiseEvent,接着单击 MyEvent Property Drawer,最后双击 Destruction_Rock_Destroy Event。

    我们注意到,Property Drawer 自动打开了 Wwise 工程中的 Events 文件夹。

  6. 单击 Play 按钮,进入游戏试听一下 Event。

    在游戏加载完成后,我们会听到针对 Player 游戏对象触发了巨石撞击声。由此可知,我们通过脚本成功地发送了 Event。您可能会想:“为什么我们要在 Player 游戏对象上添加岩石碎裂声呢”?其实,Destruction_Rocks Event 只是为了测试一下刚才编写的脚本是否能够正常运行。在下节课程中,我们将以本节练习为基础使用同样的脚本来通过动画发送 Event。现在您可以退出 Play 模式了。

脚本编写对游戏开发来说至关重要。假如您以后要在 Unity 中设计游戏,我们相信事先对脚本知识的学习和运用一定会给您带来很大便利。