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);
SetBool()の役割はアニメーションを切り替えるためということになりますね。- SetBool(int id,bool value)
そうなると第一引数がint型になる方は一体何を表しているのか疑問です。
SetBool(int id,bool value)とは
調べたところ、第一引数のidにはstate名を数値変換して数値を入れるようです。
数値化するために以下のメソッドを使用します。
Animator.StringToHash(string name)
何故このような手間をかけるのかというと、どうやら処理の高速化が見込めるようです。
参考

[Animator] Don't use SetBool (string name) with string parameter !
Hello After little experiment I have found that it is forbidden to use SetBool (or any other Set in Animator, like SetTrigger, SetFloat) with input parameter s...
まとめ
Unityの公式ではSetBool(int id,bool value)のほうはあまり情報がなく戸惑いましたが、処理の高速化ができるというのはアニメーションという重い処理と考えると魅力的ですね。自分でも組むときは利用してみたいと思います。それではまた次の記事でお会いしましょう!


コメント