うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】GameObject をアクティブにして Animation が呼ばれるまでの遅延を確認する

演出を作成時に GameObject をアクティブにして演出を再生させたい場合表示がちらつくことがある

おそらくこれは、GameObject の 表示のタイミングと Animation の再生されるタイミングが同時じゃないから発生してると思われる

そのためどれくらい遅延してるか確認する

確認方法

以下のコンポーネントを貼り付けて、Animator の 0フレーム目にイベントを仕込み呼び出す

public class ActiveCall : MonoBehaviour
{
    private void OnEnable()
    {
        Debug.Log($"Enable: {Time.realtimeSinceStartup}");
    }
} 
public class AnimatorCall : MonoBehaviour
{
    private void Call()
    {
        Debug.Log($"Animator Call: {Time.realtimeSinceStartup}");
    }
}

結果

Enable: 2.825151 Animator Call: 2.947662 0.122511 秒となった

もし 30 FPS の場合 1F が 1 / 30 = 0.333... なので 4フレームほど表示されている状態になると考えられる

そのため、もし Animation で非表示から表示する演出を作成する場合は Awake 側で非表示にしないとちらついて見える可能性が高いことが分かった