简介: SignalTrack 使用过来发送事件的轨道。何为事件,简单理解就是当时间线滑动到某个事件位置时,就会调用事件指定的方法。 AnimationTrack , AudioTrack , ActivationTrack 也可以发送事件
版本:Unity2019.4.12f1 HDRP 7.5.1
准备
timeline 中添加一个 SignalTrack
既然是发送一个事件,那就需要一个接受物体,创建一个空物体并添加 SignalReceiver 组件
-
创建一个 SignalPrinter 类,来调试我们的事件发送结果
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SignalPrinter : MonoBehaviour { public void FirstPrint() { Debug.Log("the first print from "+gameObject.name); } public void SecondPrint() { Debug.Log("the second print from " + gameObject.name); } }
SignalTrack 属性介绍
- SignalTrack 轨道最左侧的属性框,可以指定一个带有 SignalReceiver 组件的物体,所有本轨道的事件都会向其发送
- SignalTrack 没有公开属性可以设置
SignalTrack 事件点介绍
- 创建事件文件 Project 面板内右键,Create -> Signal
- 添加事件到信号轨道,在信号轨道上右键,可以选择 AddSignalEmitter 添加一个空的事件点,也可以选择 AddSignalEmitterFromSignalAsset 从事件文件创建事件点
- 事件点属性介绍
1. Time:事件点的事件位置 s:秒为单位,f:帧为单位
2. Retroactive:如果Timeline开始播放信号时间点后的内容,它会触发信号
3. EmitOnce:当轨道处于循环状态时,只第一次发射信号
4. EmitSignal:指定当前事件点触发后要发送的信号
5. SignalReceiver:这里主要展示的时接受信号的物体的 SignalReceiver 的组件内容
- 当添加新的事件时,如果接受物体上没有信号设置,则会提示添加
- 高亮的 Signal 就是当前事件点将要发送的信号
测试信号触发流程
- 给我们的信号接收物体添加我们写的测试用的 SignalPrinter 组件
- 给 signal1 设置 FirstPrint,给 Signal2 设置 SecondPrint
信号接收物体调用其它物体方法
- 信号接收物体处理调用本身组件的方法,可以指定调用其它物体的方法,只需要设置相对应事件设置的接受物体即可,这里指定的物体不再需要绑定 SignalPrinter 组件
- 一个信号接收器也可以同时向多个物体发送信号,在对应信号的列表里进行添加即可