AnimationEventのように、Timelineのイベントを実行する方法についてです。
Timelineを使用していると、特定のタイミングでイベントを発行したいと思う事はよくあります。
例えば通常のカットシーンでは「爆発の衝撃でカメラを揺らす」といったタイミング、必殺演出では「ダメージ表示のタイミング」といった具合です
しかしTimelineのEventはまだ登場しておらず、代替ソリューションでITimeControlやActiveを使用しろと言う始末。(一応Unity 2018.2かUnity 2018.3辺りで登場する予定な模様 2019.1に延期)
【Unity】Timelineからメソッドを呼ぶ新機能 「Marker」と「Signal」と「Signal Receiver」 - テラシュールブログ
自分は今使いたいので代替案を探した所、UnityTimelineEventsというモノがあったので紹介します。
UnityTimelineEvents
Unity Timeline EventはGithubで公開されているTimelineでイベントを発行することが出来るアセットです。
Timeline上で指定したGameObjectの持つメソッドを、任意のタイミングで呼び出す呼び出すことができるので、結構良い感じに使えます。
使用できるイベントはPublicで引数が0~1個のメソッドです。使用できる引数のタイプはint、string、float、bool、enumなどAnimationEventでお馴染みのAPIが呼び出せるようになっているみたいです。
実際に使ってみる
実際に使ってみます。
まずTantawowa.timelineEvent > Timeline Event Trackで、新しいトラックを追加します。
トラックにEventを呼び出したいGameObjectをセットします。
ここでセットしたGameObjectに登録されているComponentのメソッドが呼び出せるようになります。
あとはClipでメソッドを呼び出します。実はメソッドだけでなくプロパティも呼び出せたりします。
なおゲームを再生せずともTimelineのイベントを呼び出すオプションがありますが、ここで変更した値を戻す事を考えると余り使いたくない所です。
Timelineの変更はゲーム再生終了後も維持されるので、このイベントの動作はゲームを実際に再生しながら調整するのが個人的には良いように感じています。
関連
一応、AnimationEventをTimeline側から呼び出すことは出来るので、そちらで調整するアイディアもあるかもしれません。