LoginSignup
2
1

More than 5 years have passed since last update.

Animation Eventがコールされないときもしかしたらこれが原因かもしれない…

Posted at

初めに

割と特殊なシチュエーションだと思います

環境

Unity5.6.3p2
Unity2018.1.1f1

何が起こったのか?

単一のアニメーションのタイムライン上に複数のイベントを追加しているにも関わらず一部のイベントが呼ばれなかった

状況

▼こういう感じでアニメーションイベントを複数用意し…
AnimationEvent002.PNG
▼0:25に設定したイベント
eventsetting001.PNG
▼0:40に設定したイベント
eventsetting002.PNG

▼ログ確認用イベントスクリプト

EventLogger.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EventLogger : MonoBehaviour {

    public void PushLog(int val)
    {
        Debug.LogFormat("イベント発生!:{0}", val);
    }
}

てな感じでアタッチしておくと…
▼予想
result002.PNG
という出力が本来望ましい。。。はずなのだが…

▼現実
result003.PNG
という出力結果になり「0:25にセットしたイベントどこいった」状態になることがあった。

原因

根本の原因としては、
【対象のアニメーション.animのm_Eventsが時系列順に並んでいなかった】
というのが真相っぽいです。
これを引き起こした要因としては、
【AssetStoreにて販売されているとあるイベント設定拡張アセット】
の利用によるものでした。

▼上記の現実の結果が出力された際の.anim
AnimInside001.PNG

パラメータの名前を覗いてもらうと上記のエディタ越しのものと対応しているのがわかるかと思いますが、
注目してほしいのはtimeの値。
上が0.6666667に対してその下が0.41666666。これが本来は…

▼こうあるのが正しい(実際にエディタ搭載のアニメーションウィンドウから設定を行うとこの結果になる)
AnimInside002.PNG

対処法

  • エディタ搭載のアニメーションウィンドウでいずれかのイベントのフレームをずらして戻す

これを行うことでイベントに対してソートが行われるようです。
(まぁ、搭載のやつはイベントの選択コントロールが小さすぎてクッソイライラするので、使ってるアセットのコードにソート機能を追加してぇなという気持ちがある…)

最後に

皆様もエディタ拡張系アセットを使う場合はこの手のトラップにお気をつけください…

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1