0
1

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 13

【Unity】Arbor3で各ステートのコンポーネント取得が毎回大変なので、楽な方法を探す

Last updated at Posted at 2024-12-24

はじめに

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

ステートマシンを使っていて面倒...や大変と感じることはコンポーネント取得周り。Idle,Move,Attck見たいにステートがどんどん増える度に書くのが面倒になったので楽したいと思います。

参考にしたリンク

Arbor3でコンポーネント取得する方法

GetComponentでの取得や、インスペクタから直接アタッチ、ParameterContainerからのアタッチなど様々な方法がありますが、回数が増えてくると段々面倒くさくなります。稀に、インスペクタからアタッチした方が楽なコンポーネントもあります。

Animatorの取得はインスペクタからアタッチするとLayer指定やState指定ができるのでむしろ楽。ParameterContainerやGetComponentだとできない。
image.png

結論

GetComponentを利用する or VContainerを利用する

GetComponentを利用する場合

ステートのStart内にGetComponentを追加するだけなので簡単です。ArborFSMのStartが実行されるタイミングについてですが、ステートが実行されたタイミングで呼び出されるのでMonoBehaviourのStartと実行するタイミングが少し異なります。

VContainerを利用する

GetComponentよりもさらに楽です。LifetimeScopeを作ってコンポーネントを登録して、Auto Injectの対象に入れて各ステートに[Inject]をつけるだけです。

ステートが沢山あったとしても、自動で取得してくれるので本当に楽です。というかArborFSMもInjectの対象なんだ.....
スクリーンショット 2024-12-24 154224.png

使うならどっちが良いか

GetComponentの場合、GameObjectの階層が違うだけで利用できなくなる不便さとかもあったりと面倒な部分もあるので、使うならVContainerの方が良いと思います。

VContainerをとりあえず使うだけの記事も上げているので良ければ.............

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?