调用自定义事件是将新代码或第三方资产集成到Adventure Creator中的一种方便方法,因为它们可以在AC常规代码之外调用,而不是代替。Adventure Creator的EventManager脚本提供了许多事件处理程序,这些程序在AC.EventManager Class Reference中列出。

出于本教程的目的,我们将添加一个事件侦听器,该侦听器将在角色说话时被调用。例如,如果我们希望集成一个自定义的lip-syncing解决方案,这可能会很有用。由于本教程涵盖了脚本编写,因此假设您具备C#的基本知识。

EventManager脚本有一个名为OnStartSpeech的静态事件,每当角色开始说话时就会调用该事件。根据脚本编写指南,任何侦听器都需要以下参数:

  • AC.Char speakingCharacter - 正在说话的角色。如果为空,则该行被视为旁白
  • string speechText - 对话文本
  • int lineID- SpeechManager生成的speech line ID号

创建名为SpeechListener的新C#脚本,并在顶部添加AC namespace:

1
2
3
4
5
6
7
8
using UnityEngine;
using System.Collections;
using AC;

public class SpeechListener : MonoBehaviour
{

}

让我们创建一个充当侦听器的函数。将其命名为GetSpeech,并添加上面列出的参数:

1
2
3
4
void GetSpeech (AC.Char speakingCharacter, string speechText, int lineID)
{

}

在函数内部,添加一个简单的Debug。记录以输出参数值,以便我们确认其工作:

1
2
3
4
void GetSpeech (AC.Char speakingCharacter, string speechText, int lineID)
{
Debug.Log ("Character: " + speakingCharacter + ", Text: " + speechText + ", lineID: " + lineID);
}

我们现在只需要将此函数作为侦听器添加到OnStartSpeech函数。如果我们在OnEnable函数中执行此操作,则会在场景开始时添加它:

1
2
3
4
void OnEnable ()
{
EventManager.OnStartSpeech += GetSpeech;
}

就这样!如果将此脚本添加到Adventure Creator场景中,您会发现语音文本在触发时输出到控制台:

控制台输出