我们可以在信号时间轴(Signal Track)上的指定帧上部署信号点,类似帧回调。
点击Timeline窗口上的“+”按钮,创建Signal Track。并将希望接收信号的GameObject拖到Signal Track上。
Project面板上点击右键->Create->Signal
将信号资产拖到 Signal Track 上的指定帧上,当 Timeline 播放到这一帧时就会触发信号发射。
在希望接收信号的对象上挂上信号接收器组件(SignalReceiver)和自己定义的用来处理信号的脚本(如这里的TestSignalReceiver.cs),并在SignalReceiver组件中为希望接收的不同信号设置回调函数。
选中Signal Track上的信号标签,并设置要发送的信号。
Retroactive:如果勾选上,当Timeline开始播放的起始位置在信号之后时,起始位置之前的信号会立即触发。
Emit Once:如果勾选上,当Timeline设置为循环播放时,此信号仅会触发一次。
using UnityEngine;
/// <summary>
/// 用来接收并处理信号的脚本
/// </summary>
public class TestSignalReceiver : MonoBehaviour
{
//处理信号的回调函数
public void OnSignalReceive(string signalName)
{
Debug.LogFormat("Signal Receive! {0}", signalName);
}
}