3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity TimelineのPlayable Trackとその実装方法について

Posted at

記事の目的

Playable Trackとその実装方法について簡単にご説明すること

レポジトリ

Playable Trackとは?

アニメーションや音源の再生時間を管理するTimeLine上に、スクリプト制御を設定できるTrack
下記の動画ではPlayable Trackを用いて、スライドの切り替えを行っている
※同時にAnimation Trackで球のサイズを大小している
Playing Slide TimeLine

Playable Trackのメリット

  • 時間管理が楽
  • 動画のタイミングに合わせた空間演出が可能(プレゼンや研修動画などを3Dデザインできる)
  • スクリプトが分からない人に仕事を任せられる

設定方法

  1. 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;
    
    }
}
  1. 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>
といった記述が必要になる。
  1. UnityのGUIでTimelineのPlayable Track上にPlayable Assetを挿入(右クリックで勝手に出てくる)
    add slide asset

  2. Assetにプロパティがあれば、AssetをクリックしたときにInspector上で表示される場所にデータを入れておく
    add propaty

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?