記事の目的
Playable Trackとその実装方法について簡単にご説明すること
レポジトリ
Playable Trackとは?
アニメーションや音源の再生時間を管理するTimeLine上に、スクリプト制御を設定できるTrack
下記の動画ではPlayable Trackを用いて、スライドの切り替えを行っている
※同時にAnimation Trackで球のサイズを大小している
Playable Trackのメリット
- 時間管理が楽
- 動画のタイミングに合わせた空間演出が可能(プレゼンや研修動画などを3Dデザインできる)
- スクリプトが分からない人に仕事を任せられる
設定方法
- PlayableBehaviourクラスを継承したクラスで、振る舞いを設定
SlideChange.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
public class SlideChange : PlayableBehaviour
{
public Sprite slideImage;
public GameObject spriteObject;
//タイムライン開始時実行される
public override void OnGraphStart( Playable playable ) {
base.OnGraphStart( playable );
//スライドを表示するGameObjectを取得
spriteObject = GameObject.FindGameObjectWithTag("Window");
}
//PlayableAsset(コマ)再生時実行される
public override void OnBehaviourPlay( Playable playable, FrameData info ) {
//スライドの画像(Sprite)を変更
spriteObject.GetComponent<SpriteRenderer>().sprite = slideImage;
}
}
- PlayableAssetクラスを継承したクラスで、振る舞いをTrack上に差し込めるAssetを作成
SlideAsset.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
public class SlideAsset : PlayableAsset
{
public Sprite image;
public override Playable CreatePlayable( PlayableGraph graph, GameObject owner ) {
//PlayableBehaviourを継承したSlideChangeクラスを元に、PlayableAsset(コマ)を作る
var player = ScriptPlayable<SlideChange>.Create( graph );
//SlideChangeクラスにあるプロパティを設定
var behaviour = player.GetBehaviour();
behaviour.slideImage = image;
return player;
}
}
※基本的にはPlayableAssetでコマの設定が出来、そのPropertyを設定できる。
ただしMonobehaviourを継承していないので、Scene内のものを取得したい場合は
ExposedReference<Object>
といった記述が必要になる。