信號(hào)軌道,顧名思義就是運(yùn)行到某處發(fā)送一個(gè)信號(hào)。
普通用法
普通用法就是沒有任何封裝的,個(gè)人感覺特別難用,但是有必要理解一下工作原理。
添加信號(hào)
我們添加一個(gè)信號(hào)資源
生成后可以看到資源文件,這個(gè)是可以拖到SignalTrack上的。
我們在Timeline上添加兩個(gè)信號(hào)軌道,并拖動(dòng)信號(hào)到軌道上。
然后我們看到兩個(gè)信號(hào)接收器還是空的,我們可以添加信號(hào)接收。
自定義一個(gè)接收信號(hào)的腳本
我們創(chuàng)建一個(gè)普通的接收腳本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SignalGetTest : MonoBehaviour
{
public void GetSignal(int sig)
{
Debug.Log("接收到信號(hào)"+sig);
}
}
然后我們建立兩個(gè)接收器來接收這兩個(gè)信號(hào)。
這里就是比較麻煩的地方,因?yàn)閕nt參數(shù)是在接收腳本上的,所以需要兩個(gè)接收。
把接收器拖入軌道引用里
把1拖入1,2拖入2。
我們執(zhí)行看結(jié)果.
這就是最基礎(chǔ)的用法了,這里因?yàn)樾盘?hào)不帶參數(shù)所以不方便使用,這里我添加了兩個(gè)接收器,或者可以創(chuàng)建不同的信號(hào)來實(shí)現(xiàn),那么如何使用一個(gè)信號(hào)發(fā)送帶參數(shù)不就很方便了,下面我們來看如何制作。
好用的辦法
我們需要3個(gè)腳本:
一個(gè)自定義接收器,一個(gè)帶參數(shù)的Mark信號(hào),一個(gè)自定義軌道。
先貼上腳本:
Mark信號(hào)
我的信號(hào)需要繼承Marker,類似于信號(hào)。
using UnityEngine.Playables;
using UnityEngine.Timeline;
using UnityEngine;
using System.ComponentModel;
[DisplayName("我的信號(hào)")]
public class MySignal : Marker, INotification, INotificationOptionProvider
{
public string sigName;
public int sigParm1;
public PropertyName id { get; }
NotificationFlags INotificationOptionProvider.flags => NotificationFlags.TriggerOnce | NotificationFlags.TriggerInEditMode;
}
我們可以看到下面就多了Add 我的信號(hào)
接收器
這里負(fù)責(zé)處理不同的信號(hào)類型,我這里寫了如果是MySignal就顯示出來,如果你有多個(gè)信號(hào)類型可以自行擴(kuò)充。這個(gè)腳本掛在一個(gè)對象上就可以了。
腳本如下:
using UnityEngine.Playables;
using UnityEngine;
class MySignalReceiver : MonoBehaviour,INotificationReceiver
{
public void OnNotify(Playable origin, INotification notification, object context)
{
if (notification is MySignal)
{
MySignal signal = (MySignal)notification;
Debug.Log(signal.sigName + "," + signal.sigParm1);
}
}
}
軌道
然后是我們的軌道,我們看到這個(gè)軌道Binding類型就是我們的接收器。
using System.ComponentModel;
using UnityEngine.Timeline;
[TrackBindingType(typeof(MySignalReceiver))]
[DisplayName("我的信號(hào)軌道")]
public class MySignalTrack : MarkerTrack
{
}
在Timeline上點(diǎn)擊鼠標(biāo)右鍵,我們就可以添加軌道了。
然后我們需要把腳本對象拖動(dòng)上去
然后我們添加兩個(gè)信號(hào)
并且可以輸入信號(hào)的參數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-849473.html
我們運(yùn)行看效果
這樣就實(shí)現(xiàn)了自定義信號(hào),也不麻煩還很好用。文章來源地址http://www.zghlxwxcb.cn/news/detail-849473.html
到了這里,關(guān)于Unity Timeline學(xué)習(xí)筆記(3) - SignalTrack信號(hào)軌道和自定義帶參數(shù)的Marker信號(hào)和軌道的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!