特定のステートから抜けたタイミングで、シーン内のオブジェクトにアタッチされたスクリプトの変数を変更したいなと思い、StateMachineBehaviorで、以下のスクリプトを書きました。
public class UntiburiBehaviour : StateMachineBehaviour { [SerializeField] GameObject Unkoman; UnkomanAction UnkomanAction; void Start() { UnkomanAction = Unkoman.GetComponent<UnkomanAction>(); } override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { animator.SetBool("UntiburiFlag", true); } override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { animator.SetBool("UntiburiFlag", false); UnkomanAction.UnkoSet = 1; } }
このコードの[SerializeField]でシーン内のオブジェクトを取得したかったのですが、インスペクターでシーン内のオブジェクトを入れることができませんでした。
StateMachineBehaviourでは、MonoBehaviourでいつも書いているようなコードは使うことはできないのですか?
特定のステートから抜けたタイミングで、シーン内のオブジェクトにアタッチされたスクリプトの変数を変更するには、どのような書き方をすればできますか?
※追記 回答をいただいた後に書いたStateMachineBehaviourのコードです。
UnkoSetはpublic変数です
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { animator.SetBool("UntiburiFlag", true); animator.gameObject.GetComponent<UnkomanAnim>().UnkoSet = 1; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/21 01:37
2020/06/21 01:49
2020/06/21 07:46