まいにち、いっぽ

物事を理解するための出力装置

Timeline から指定した関数を呼び出すアセット「Timeline Events」を紹介

アセットの概要

  • Unity 公式の Timeline 機能を拡張するアセット
  • Timeline にイベントを設定し、呼び出す事が出来る
  • 驚きの無料アセット assetstore.unity.com

実際に使用する用途

  • Timeline 演出中にAnimator のフラグを操作する
  • Timeline 演出中に関係ないクラスの関数を呼び出す

使用するための前提条件

  • Timeline を使ってオブジェクトを移動させる事が出来るくらいの知識
  • Timeline の Bindings をスクリプトで制御できる

手順

  1. TimelineEvents をプロジェクトに追加する
  2. Timeline を作成する(Playable Director を作って再生する所まで)
  3. Event を発生させる track を作成
    f:id:syuuki_kisaragi:20181124113827p:plain
  4. Bindings のオブジェクトと同じ階層に、呼び出し用のクラスを用意する
    (特定の何かを呼ぶタメのクッションになります)
  5. Clip の作成
    f:id:syuuki_kisaragi:20181124113849p:plain
  6. Clip を選択し、Inspectorに表示させる
  7. Method をプルダウンから呼び出したい関数を選択する
    ※引数は1つ使えるようですが、今回は引数なしで確認しています。既に複雑であり、引数の用途を見いだせませんでした。
  8. ゲームを動かして挙動確認

備考

  • Event Clip は1フレームなどの短いフレームのみ発生するようにすると、処理落ちが発生したときにイベントが発生しない事があります。今後に期待

おまけ Bindings から null を渡す方法

初期の状態の場合、Director の Binding に null を渡すことが出来ません。
以下は無理やり null を渡す為の改造手順です。

主に空振り(対象がいない)状態で使用する事になります。
ゲームによっては必要になる状況と考えています。

  1. TimelineEventTrack.cs の 23行目の if( trackTargetObject )コメントアウトする
  2. TimelineEventBehaviour.cs の133行目の throw new Exception("No target set for key " + key);return ; _に書き換える

※TimelineEventBehaviour.cs で過去のオブジェクトへの参照を保持しているようです。改造を行った後は挙動の確認を十分に行って頂けると不具合を防げると思いマス