TimelineのTrackを自作するときにTrackAssetクラスを使います。 このクラスでは何ができるのかを調べてみました。
TrackAsset
自作のTrackを作る場合にはTrackAssetクラスを継承します。
public class TestTrack : TrackAsset { }
Clip指定する
Trackで指定できるClipをTrackClipType Attributeを使って指定します。
[TrackClipType(typeof(TestClip))] public class TestTrack : TrackAsset { }
対象のオブジェクト指定する
Timelineでアニメーションを行うオブジェクトを指定する場合には、TrackBindingType Attributeを使います。
[TrackClipType(typeof(TestClip))] [TrackBindingType(typeof(Image))] public class TestTrack : TrackAsset { }
Trackの色を指定する
Trackの判別をするために色を付けることができます。 こちらはTrackColor Attributeを使って指定します。
[TrackClipType(typeof(TestClip))] [TrackBindingType(typeof(Image))] [TrackColor(255,0,0)] public class TestTrack : TrackAsset { }
メソッド
TrackAssetで定義されているメソッドを調べてみました。
GetClips
Trackで設定されているClipを取得できます。
public IEnumerable<TimelineClip> GetClips()
CreateTrackMixer
このメソッドを継承することでClip同士のブレンド周りの処理を自作できます。
public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) { var mixer = ScriptPlayable<TestMixer>.Create(graph, inputCount); // 各mixerの処理 return mixer; }
GatherProperties
TimelineからTrackを削除したときに呼び出されます。 利用方法としては、Trackに設定されているobjectを元に戻すために利用することが多いみたいです。
public override void GatherProperties(PlayableDirector director, IPropertyCollector driver)
{
}
PlayableDirector
PlayableDirectorはTimelineを管理するコンポーネントです。
Trackに設定されているObjectを取得する場合GetGenericBindingを使います。 Imageの色を戻す場合は次のようにGatherPropertiesの記述ができそうです。
var bindingImage = director.GetGenericBinding(this) as Image; if(bindingImage != null) { // Bindingされたobjectがある場合、元に戻している driver.AddFromName<Text>(bindingImage.gameObject, "m_Color"); }