Markerを配置できる場所には、TimelineのMarkerTrackとGameObjectをバインドしたTrackの2つがある。
後者を使うことでGameObjectを個別に制御できる
INotificationReceiver
を実装したクラスをTrackAsset
クラスを継承したクラスのTrackBindingType
属性に設定すればいい
例えば、全てのリストに設定したゲームオブジェクトをアクティブにするには以下の通りに書く
通知を受け取る側は、MonoBehaviourを継承しているのでGameObjectに対してどんな処理でもできる
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
public class CustomMarker : Marker, INotification
{
PropertyName INotification.id { get; }
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
public class CustomReceiver : MonoBehaviour, INotificationReceiver
{
void INotificationReceiver.OnNotify(Playable origin, INotification notification, object context)
{
if(notification is PlatoonEncounter marker)
{
Activate();
}
}
public List<GameObject> gameObjects = new List<GameObject>();
void Activate()
{
gameObjects.ForEach(_ => _.SetActive(true));
}
}
using UnityEngine.Timeline;
[TrackBindingType(typeof(CustomReceiver))] // この属性でどのゲームオブジェクトが通知を受け取るか指定できる
public class CustomTrack : TrackAsset {} // クラス名がTrackの名前になる