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?

Hamster OutputAdvent Calendar 2024

Day 14

【Unity】Arbor3のAnimatorCrossFadeからLayerとStateを入手できる方法を作った

Posted at

はじめに

この記事はHamster Output Advent Calendar 2024の14日目の記事です!

ArborFSMのステートから現在再生中のAnimationの情報を取得したいなと感じるようになり、取得方法を探しましたがスクリプトの中身を見る限り取得方法がありませんでした...。

image.png

スクリプトの中身を載せるのはアウトなので...どうやって取得できるようにしたかの手段を書きます。

投稿者はEditorの処理を完全に把握していません。あくまで、自分が欲しい処理を追加するために少し追加しただけです。

AnimatorCrossFadeの中身を確認する

利用したい情報が入っている変数名だけ書くと、下の内容になります。

AnimatorCrossFade.cs
// LayerとStateを保持している変数たち
private string _CacheLayerName;
private string _CacheStateName;

自分が調べた限りにはなりますが、ArborにはEditorの変数を参照する手段がないためこのままだと参照できないです。

AnimatorCrossFade.csを複製して処理を追加する

AnimatorCrossFadeに直接追加するのもありかな...?と考えましたが、仮にUpdateが来た時に困りそうな気がしたので、別フォルダーに複製して作りました。

そして、複製されたAnimatorCrossFadeに追加された処理が以下の通りです。プロパティを追記しました。

CustomAnimatorCrossFade.cs
// ここ以外の内容はAnimatorCrossFade.csと同じ
#region 2024.12.24にハムスターが追加した部分
public string GetChaceLayerName => _CacheLayerName;
public string GetChaceStateName => _CacheStateName;
#endregion

これで、ArborEditor上にスクリプトが配置できるようになります。

image.png

現時点では、AnimatorをアタッチしてもLayerやStateに選択できるタブは出てきません。通常のAnimatorCrossFadeではAnimatorを参照すると以下の状態になります。

image.png

次はこのタブを出すために、もう一つのEditorのスクリプトを複製します。

AnimatorCrossFadeInspector.csを複製して一部の処理を変更する

変更する部分はclassの上にあるCustomEditorの内容を変更するだけです。

CustomAnimatorCrossFadeInspector
[CustomEditor(typeof(CustomAnimatorCrossFade))]

EditorでAnimatorを設定するとAnimatorCrossFadeと同じようにLayerとStateが設定できるようになります。

image.png

LayerとStateの参照方法

同じステート内にCustomAnimatorCrossFadeがあればGetComponentで取得できます。

// 変数宣言
private CustomAnimatorCrossFade _customAnimatorCrossFade;

// 取得方法
_customAnimatorCrossFade = GetComponent<CustomAnimatorCrossFade>();

// こんな感じで使えます
var layer = _customAnimatorCrossFade.GetChaceLayerName;
var state = _customAnimatorCrossFade.GetChaceStateName;

これで、LayerとStateをAnimatorCrossFadeから参照できるようになりました。

詳細に書けない内容な記事にはなりましたが、コピーしたり工夫すれば割と自分が追加したい処理を入れれるんだなと思いましたー

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?