Unityのアニメーションを制御するAnimatorを勉強していると、Animator.SetBool(int id, bool value)というメソッドが出てきた。
Animator.SetBool()と調べてみると第一引数がstring型のがよく出てくる。
Animator.SetBool(string name, bool value)
今回はこの2つの違いについて調べたことを書いていこうと思います。
SetBool()の役割
- SetBool(string name,bool value)
第一引数にAnimatorのStateと同じ文字列を入れて第二引数をtrueにするとそのStateにスイッチできてアニメーションの切り替えができる。
例
Animator.SetBool("idle", true);
Animator.SetBool("diving", true);
![](https://t-arashiyama.com/wp-content/uploads/2021/02/2021-02-18-2-1024x651.png)
- SetBool(int id,bool value)
そうなると第一引数がint型になる方は一体何を表しているのか疑問です。
SetBool(int id,bool value)とは
調べたところ、第一引数のidにはstate名を数値変換して数値を入れるようです。
数値化するために以下のメソッドを使用します。
Animator.StringToHash(string name)
何故このような手間をかけるのかというと、どうやら処理の高速化が見込めるようです。
参考
Access Denied
まとめ
Unityの公式ではSetBool(int id,bool value)のほうはあまり情報がなく戸惑いましたが、処理の高速化ができるというのはアニメーションという重い処理と考えると魅力的ですね。自分でも組むときは利用してみたいと思います。それではまた次の記事でお会いしましょう!
コメント