0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Unity】Animatorでステートが切り替わった時に通知を受け取りたい

Last updated at Posted at 2025-12-23

はじめに

この記事はHamster Output Advent Calendar 2025の6日目の記事です。

今回はAnimatorでステートが切り替わった時に通知を受け取ることができるR3(UniRx)のObservableStateMachineTriggerを使って情報を受け取れるようにしたいと思います。

R3を利用するのでプラグインのダウンロードが必須です。自分はいつも下の方法でダウンロードしてます。

1.PackageManagerの Add package from git URLから Nugetをダウンロードする
Unity上部のバーからWindow>PackageManagerを選び、PackageManagerのウィンドウが開いたら、左上の+ボタンをクリックして、Add package from git URLを選択して下のURLを入れてダウンロードします

https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity

2.NugetからR3のコアモジュールをダウンロードする
Nugetをダウンロードすると、Unity上部のバーにNugetが出てきます。これを選択してManage Nuget Packagesを押して、開いたウィンドの検索バーにR3を入れて表示されたR3をインストールします

3.1でやったPackageManagerの方法でR3のUnityプラグインをダウンロードする

https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity

ダウンロードについては下記の方が詳しく書いてくださっています...!

ステートの切り替わった時の通知を受け取る

1.AnimatorのステートにObservableStateMachineTriggerをアタッチする
Animatorを開いて、表示されているステートを選択します
image.png

ステートを選択すると、インスペクターにステートに関する内容が表示されるので、下に表示されているAdd Behaviourを選択してObservableStateMachineTriggerをアタッチします。
image.png

2.ObservableStateMachineTriggerのOnStateEnterAsObservableを購読する
下のスクリプトを作って、GameObjectにアタッチします!

using Cysharp.Threading.Tasks;
using R3;
using R3.Triggers;
using UnityEngine;

public class Test : MonoBehaviour
{
    [SerializeField]
    private Animator _animator;

    private void Start()
    {
        var triggers
            = _animator.GetBehaviours<ObservableStateMachineTrigger>();

        foreach (var trigger in triggers)
        {
            var enterState = trigger
                .OnStateEnterAsObservable()
                .Subscribe(x =>
                {
                    Debug.Log($"OnStateEnter(Each): {x.StateInfo.shortNameHash}");
                })
                .AddTo(this);
        }
    }
}

試しにシーンを再生すると、最初のステートのハッシュ値が出てきました!

image.png

DodgeにもObservableStateMachineTriggerをアタッチして、Animatorを繋げた状態にして状態で再生すると

image.png

問題なく、ステートが切り替わったタイミングでハッシュ値が表示されました!
image.png

ObservableStateMachineTriggerにはステート開始時以外にも、Update中や、ステートの終了時に通知を受け取ることもできますので、Animatorのステートを使う方は利用してみてはいかがでしょうか!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?