こんにちは、Unityエンジニアのオオバです。
Unity Timelineでアニメーション演出を作っていると、 AnimationEventを受け取りたくなる ときがあります。
AnimationEventとはAnimationClipの任意のタイミングでイベントを受け取る仕組みです。AnimationEventを使えるとアニメーションの中に任意の処理を実行できるようになるため、演出の幅が広がります。
そこで本記事ではUnity Timeline上でAnimationEventを使う方法を紹介していきます。
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
AnimationEventとは
AnimationEventとは任意のアニメーションタイミングで処理を実行できる仕組み です。AnimationClip内にイベントデータを仕込み、任意の関数を実行することができます。
パラメーターも渡すことができるため、柔軟にイベント管理が可能です。詳しくはこちらの記事を参考にしてみてください。
以降の章ではAnimationEventを理解している前提で進めていきます。
Unity TimelineのAnimationTrackとは
AnimationTrackとはUnityが提供するデフォルトトラックの1つでAnimationClipを再生します。
AnimationTrackで動かす対象(Animator)をセットして任意のAnimationClipをタイムラインで動かすことができます。
またAnimationTrack内のレコードボタンをクリックすればその場でAnimationClipの作成もできます。
Unity Timeline上でAnimationEventは直接追加できない
AnimationTrackを触るとわかるのですが、AnimationEventを仕込む方法が提供されていません。結論から言うとTimeline Window上でAnimationEventは仕込めません。
AnimationEventが保存される場所はあくまでAnimationClipファイル内です。つまりAnimationClipを編集できる 「AnimationWindow」からAnimationEventを仕込む必要がある のです。
Unity TimelineのAnimationClipにAnimationEventを追加する方法
ではUnityTimelineで作成したAnimationClipにAnimationEventを追加する方法を解説していきます。
まずはAnimationTrackに追加したAnimationClipをダブルクリックします。
もしくはAnimationClipを 右クリック -> Edit in Animation Window
からAnimation Windowでの編集画面に移動します。
もしレコードボタンで作成したアニメーションの場合はクリップに変換します。
右クリック -> Convert To Clip Track
からAnimationClipに変換してください。
Animationウィンドウが表示したら、いつも通りAnimation Eventを追加します。 右クリック -> Add Animation Event
からAnimation Eventを追加してください。
AnimationEventにはレシーバーコンポーネントが必要でした。感覚的にPlayableDirectorと同階層に追加したら良いのかなと思いがちですが違います。
あくまでAnimatorと同階層にAddComponentしてください。するとAnimationEventからメソッドを選択できるようになります。
Unity Timelineの動作に合わせてAnimationEventが動作
AnimationEventを仕込んだらTimelineウィンドウに戻って動作確認します。Editモード中にシークバーを動かしてみましょう。
するとAnimationEventで仕込んだメソッドが動作しました。
Unity TimelineでAnimationEventを仕込む解説は以上です。
Unity Timeline×AnimationEventまとめ
本記事ではUnity TimelineとAnimationEventの連携について解説してきました。
簡単に記事内容をまとめます。
①AnimationEventはTimelineウィンドウから設定不可
②AnimationウィンドウからAnimationEventは設定
③AnimationEventにはレシーバーコンポーネントが必要
④レシーバーはAnimatorと同階層に追加する
こんな感じです。
ゲームで演出を作るときの選択肢としてUnity Timelineはよく候補にあがります。中でもAnimationTrackの使用頻度は高いです。
AnimationEventとセットで使うことでUnity Timelineをより柔軟に使うことができるため、ぜひ今回紹介した内容は覚えておいていただければと思います。

筆者のXをフォローしよう
- Unity6000.0.32f1