UnityのTimelineを使ってみる

Unity

Unityにはタイムラインというものがあり、アニメーションや音源などの複数の要素を動的に編集することが出来るので、ゲーム中にムービーシーンを導入したい時などに非常に有効な手段です

前々から気になっていたので今回はこれを触ってみようと思います



Timeline導入

今回はこちらの記事を参考にさせて頂きました

プロジェクトウインドウ内(今回はアセットフォルダ内)で右クリック→Create→Timelineを選択

ウインドウ内にTimelineアイコンが生成されるので、Hierarchyウインドウ内に空オブジェクトを作り、アタッチ

ダブルクリックするとタイムラインエディタが表示されます

ここで様々な要素の編集を行うことになります

Timelineを編集してみる

今回はキューブを表示させるものを作成しようと思います

エディタ内で右クリック→Activation Track(赤線部)をクリックします

シーン上にキューブを作成し、Activation Trackにアタッチ

Activeと書かれたバーをある程度右方向へドラッグします

この状態で再生してみると・・・

スライダーがActiveバー上にある時だけキューブが表示されました!

今度はテキストを3つ追加して表示タイミングと時間を調節してみます

こんな感じ

再生してみると・・・

うまくいきました

Timelineを空オブジェクトにアタッチした際に、Playable Directorが生成されます

Play On Awake(赤線部)にチェックを入れる事でTimelineがゲーム開始時に再生されるようになります

Timelineをスクリプトから再生

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;


public class TimelineManager : MonoBehaviour

//[RequireComponent(typeof(PlayableDirector))]

{
    // ここにインスペクター上であらかじめ複数のセット
    [SerializeField] private TimelineAsset[] timelines;

    private PlayableDirector director;//PlayableDirector型の変数directorを宣言

    void Start()
    {
        //同じオブジェクトに付いているPlayableDirectorコンポーネントを取得
        director = this.GetComponent<PlayableDirector>();
    }

    //イベント再生メソッド ボタンに割り当てる
    public void EventPlay(int id)
    {

        //ボタンの引数によってタイムラインを指定して再生
        switch (id)
        {
            case 1:
                // 再生したいタイムラインをPlayableDirectorに再生させる
                director.Play(timelines[0]);
                break;
            case 2:
                // 再生したいタイムラインをPlayableDirectorに再生させる
                director.Play(timelines[1]);
                break;
            case 3:
                // 再生したいタイムラインをPlayableDirectorに再生させる
                director.Play(timelines[2]);
                break;
        }
    }
}

参考記事から引用させていただいたスクリプトになります

Timelineアセットを3つ用意し、それぞれをボタンから再生するものになっています

スクリプトをTimelineをアタッチしている空オブジェクトにアタッチします

Playable DirectorのPlayable右側にある2重丸(赤線部)をクリックします

すると作成した3つのTimelineアセットが表示されるので、現在Bindingsにないものをクリックする事で追加されていきます

もふもふ
もふもふ

これに気付くまで時間かかったもふね(/ω\)

選択直後はオブジェクトがアタッチされてないので、該当するオブジェクトをアタッチしておきます(赤枠部)

続いでアタッチしたスクリプトにも3つのTimelineアセットをアタッチします

ボタンの設定に関してはこちらを

実行

ボタンごとに別のTimelineが発動しているので成功です



まとめ

タイムラインに触れてみて、非常に編集がやり易く応用もかなり効きそうなので今後の開発に活かしていきたいと感じました

タイトルとURLをコピーしました