実現したいこと
Unityで現在再生されているアニメーションをチェックする際、毎度
animator.GetCurrentAnimatorStateInfo(0).fullPathHash
と書くのは少しめんどくさいので、例外処理含め関数化したいです。
例外処理を書くのは初めてなので、普通に簡単なものかもしれないです。
発生している問題・エラーメッセージ
「値を返さないコードパスがあります」と出力されます。
該当のソースコード
C#
1 2using UnityEngine; 3using static UnityEngine.Animator; 4 5private int animatorJump = StringToHash("Jump"); 6 7// 入力された値がint型 8if (nowAnimation(animatorJump)) Debug.Log("正しい"); 9// もしくはstring型の場合は処理を返す 10if (nowAnimation("Jump")) Debug.Log("正しい"); 11 12// 現在再生されているアニメーション情報を取得 13public bool nowAnimation(string animationTag) 14{ 15 try 16 { 17 // 入力されたものがstring型だった場合の処理 18 var animationID = StringToHash(animationTag); 19 Animator animator = GetComponent<Animator>(); 20 return animator.GetCurrentAnimatorStateInfo(0).fullPathHash == animationID; 21 } 22 catch 23 { 24 // 入力されたものがint型だった場合の処理 25 if (int.TryParse(animationTag, out int type)) 26 { 27 Animator animator = GetComponent<Animator>(); 28 return animator.GetCurrentAnimatorStateInfo(0).fullPathHash == type; 29 } 30 else 31 { 32 // 問題の箇所 33 Debug.LogError("string型, またはint型で記入してください"); 34 } 35 } 36}
試したこと
Debug.LogError("")の箇所にreturnを付ける → voidをboolに変更できません。
nowAnimationの型をObjectにしてみる → boolをUnityEngine.Objectに変更できません。 & 値を返さないコードパスがあります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/12 16:39