【Unity】タイムライン(Timeline)の使い方解説!イベントシーンを作ろう!

【PR Unityアセットストア】パブリッシャーセール開催中!

凍った川や湖が表現できるマテリアルやシェーダーのアセットIce World がクーポンコード「NATUREMANUFACTURE2024」で無料でゲットできます
7月25日 23:59まで

Ice World

この記事で解決すること

  • タイムラインとは?
  • タイムラインの使い方
  • スクリプトからタイムラインを再生するには?

タイムラインとは?

Timeline(タイムライン)は、Unityの機能の一つで、ゲームやアプリの開発においてシーン内の要素やイベントを時間軸上で管理するためのツールです。アニメーション、オブジェクトのアクティブ状態の切り替え、カメラの制御、オーディオの再生など、様々な要素を組み合わせて演出を行うことができます。

タイムラインの基本的な使い方

タイムラインの作成と準備

タイムラインアセットの作成

Projectウィンドウで右クリックし、「Create > Timeline」を選択します。

適当な名前を付けて、保存します。

タイムラインウィンドウの表示

メニューから「Window > Sequencing > Timeline」を選択して、Timelineウィンドウを開きます。

GameObjectにタイムラインをアタッチ

  • Hierarchyウィンドウで、タイムラインを適用したいGameObjectを選択します。
  • Inspectorウィンドウで「Add Component」をクリックし、「Playable Director」を追加します。
  • Playable Directorの「Playable Asset」に先ほど作成したタイムラインアセットをドラッグ&ドロップします。

タイムラインウィンドウの基本操作

タイムラインを再生すると、登録されたイベントやアニメーションが時間の流れに沿って実行されます。再生中に必要に応じて一時停止や停止することもできます。

ただし、最初は何も設定されていないので、タイムラインを編集してイベント演出を作りましょう。

左上の「+」から音やアニメーションなど、制御したいものを追加します。

追加したら、タイミングの調整はドラッグで簡単に調整できます。動画編集ソフトの要領です。

タイムラインの編集

タイムライン編集の際は、タイムラインウィンドウ右上のロックアイコンをクリックして固定しておくと、他のオブジェクトを選択したときにタイムラインウィンドウが切り替わらずに便利です。

タイムラインウィンドウの「+」を押すと、タイムラインに追加するものを選択できます。

タイムラインに追加できるもの

  1. Track Group:トラックの整理
  2. Activation Track:オブジェクトのアクティブ・非アクティブ切り替え
  3. Animation Track:アニメーション制御
  4. Audio Track:オーディオ制御
  5. Control Track:他のタイムラインの制御
  6. Playable Track:スクリプトの実行
  7. Signal Track:任意のメソッドを呼び出せる

トラックグループ (Track Group)

トラックグループは、複数のトラックをまとめて管理するためのものです。トラックグループを使用すると、タイムライン内の構造を整理しやすくなり、複雑なシーケンスを視覚的に理解しやすくなります。

トラックが多い複雑なイベントを作成すると、タイムラインの編集が難しくなります。トラックグループを使うことで、ひとまとめに見やすくできます。

オブジェクト表示切り替え(Activation Track)

Activation Trackは、指定したゲームオブジェクトのアクティブ状態(有効/無効)を制御するためのトラックです。特定のタイミングでオブジェクトを表示したり非表示にしたりすることができます。

アニメーション制御(Animation Track)

アニメーショントラックを使用して、オブジェクトのアニメーションを時間軸上で制御することができます。アニメーションの再生、停止、速度の変更などを行うことができます。

オーディオ制御(Audio Track)

オーディオトラックを使用して、オーディオの再生や停止、音量の調整などを時間軸上で制御することができます。これにより、特定のイベントや演出に合わせて効果音やBGMを再生したり停止したりすることができます。

コントロールトラック (Control Track)

コントロールトラックは、複数のオブジェクトやプレハブを制御するためのトラックです。プレハブの生成・削除ができます。

プレイアブルトラック (Playable Track)

タイムライン上にスクリプトを配置することができます。こちらの記事が詳しいです。

はじめてのUnityのTimeline~スクリプトトラックの追加~|ゲーミングねこ
この記事ははじめてのUnityのTimelineの続きです。 前回の記事で、UnityのTimeline導入とユニティちゃんをTimelineで走らせることができました。 今回はスクリプトによって更に制御を入れていきます。 1.Timelineのトラックの種類 Timelieには下記の5つのトラックを配置す...

シグナルトラック (Signal Track)

シグナルトラックは、タイムライン内で特定のタイミングで任意のメソッドを呼び出すことができます。

カメラの制御方法

カメラはアニメーション制御で動かすことができますが、Cinemachineを使うとカメラの切り替えがスムーズに行えます。

Cinemachineの導入方法はこちらをご覧ください。

タイムラインの使い方応用編

タイムラインをスクリプトから再生するには

スクリプトを使って、タイムラインをプログラムから制御することができます。これにより、特定の条件やプレイヤーの行動に応じて、タイムラインの再生を開始したり停止したりすることができます。

はじめにusing UnityEngine.Playables; をつけるのを忘れないようにしましょう。

以下はコード例です。playableDirectorコンポーネントを取得し、Playで再生、Stopで停止、Pauseで一時停止ができます。

using UnityEngine;
using UnityEngine.Playables;

public class TimelineControllerScript : MonoBehaviour
{
    public PlayableDirector playableDirector;

    void Start()
    {
        // タイムラインを開始
        playableDirector.Play();
    }

    public void PlayTimeline()
    {
        // タイムラインを再生
        playableDirector.Play();
    }

    public void PauseTimeline()
    {
        // タイムラインを一時停止
        playableDirector.Pause();
    }

    public void StopTimeline()
    {
        // タイムラインを停止
        playableDirector.Stop();
    }
}

タイムラインの終了判定を取得するには

方法は複数ありますのでそれぞれ紹介します。

durationとtimeを使う方法

public bool IsDone(){
return playableDirector.time >= playableDirector.duration;
}

このメソッドは、PlayableDirectorの現在の再生時間とタイムラインの全体の長さを比較することで、タイムラインが終了したかどうかを判定します。trueを返す場合、タイムラインの再生が終了していることを意味し、falseを返す場合はまだ再生中であることを意味します。

  • playableDirector.time: PlayableDirectorの現在の再生時間を表します。これはタイムラインの再生開始からの経過時間です。
  • playableDirector.duration: PlayableDirectorが再生するタイムラインの総再生時間を表します。これはタイムライン全体の長さです。
timelineの終了判定取得方法まとめ
unity2019.4.5 timeline1.4.1おすすめPlayableDirectorの durationとtimeを使うのが楽です。public bool IsDone(){return _playableDirector.tim

stoppedでタイムラインの停止を検出する方法

stoppedで、タイムラインの再生が停止したかどうかを判定することができます。これにより、タイムラインの演出が終了したら次のイベントを開始するなどの制御が可能になります。

Unity - Scripting API: Playables.PlayableDirector.stopped
using UnityEngine;
using UnityEngine.Playables;

public class PlayableDirectorCallbackExample : MonoBehaviour
{
    // PlayableDirectorの参照を保持するためのフィールド
    public PlayableDirector director;

    // スクリプトが有効になったときに呼び出されるメソッド
    void OnEnable()
    {
        // PlayableDirectorが停止したときにOnPlayableDirectorStoppedメソッドを呼び出すようにイベントリスナーを登録
        director.stopped += OnPlayableDirectorStopped;
    }

    // PlayableDirectorが停止したときに呼び出されるメソッド
    void OnPlayableDirectorStopped(PlayableDirector aDirector)
    {
        // イベントを発生させたPlayableDirectorがこのスクリプトで監視しているPlayableDirectorかどうかをチェック
        if (director == aDirector)
            // ここに停止した時の処理を書く
    }

    // スクリプトが無効になったときに呼び出されるメソッド
    void OnDisable()
    {
        // OnEnableメソッドで登録したイベントリスナーを解除
        director.stopped -= OnPlayableDirectorStopped;
    }
}

まとめ

タイムライン機能は、シーン内の複雑なイベント管理をシンプルかつ直感的に行える強力なツールです。スクリプトの制御もできるので様々なことができますが、複雑で難しいので最初はオーディオやアニメーション制御、オブジェクトのアクティブ切り替えを試してみるのが良いでしょう。

タイムラインに特化して解説されているオンライン講座もあります。
【Unity Timeline】ゲーム制作初心者必見!UnityのTimelineでお手軽に演出を作ってみよう!

Unity
umiをフォローする
umi studio blog
タイトルとURLをコピーしました