前提・実現したいこと
以下のスクリプト(PlayerAttackBehaviour.cs)で
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class PlayerAttackBehaviour : StateMachineBehaviour 6{ 7 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state 8 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) 9 { 10 animator.GetComponent<PlayerManager>().MoveSpeed = 0; 11 } 12 13 // OnStateExit is called when a transition ends and the state machine finishes evaluating this state 14 override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) 15 { 16 //pm.MoveSpeedにインスペクタ上に設定している値が入っているのかなと思っていましたが、 17 //デバックをしてみると、実際にはPlayerManager.csの初期値2.5fが格納されていました 18 PlayerManager pm = new PlayerManager(); 19 animator.GetComponent<PlayerManager>().MoveSpeed = pm.MoveSpeed; 20 } 21}
C#
1animator.GetComponent<PlayerManager>().MoveSpeed
に3を取得し、設定したい。(現状は2.5)
###知りたいこと
以下の黄色マーカで塗りつぶしているInspectorのmoveSpeedの値3を、
PlayerAttackBehaviour.csで取得したいです。
取得したい理由は、マジックナンバーを使用せず、
柔軟に値をインスペクタから変更してもPlayerAttackBehaviour.csの値が変更されるようにしたいためです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
Start関数内で
C#
1PlayerManager pm = new PlayerManager(); 2Debug.Log(pm.MoveSpeed); 3Debug.Log(_moveSpeed);
該当のソースコード
以下は、PlayerManager.csで、
ここのフィールドに_moveSpeed,MoveSpeedを設定しています。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5[RequireComponent(typeof(Rigidbody))] 6[RequireComponent(typeof(CapsuleCollider))] 7public class PlayerManager : MonoBehaviour 8{ 9 [SerializeField] 10 private float _moveSpeed = 2.5f; 11 public float MoveSpeed 12 { 13 get { return _moveSpeed; } 14 set { _moveSpeed = value; } 15 } 16 private Rigidbody _rb; 17 private float _x; 18 private float _z; 19 private Animator _animator; 20 21 void Start() 22 { 23 _rb = GetComponent<Rigidbody>(); 24 _animator = GetComponent<Animator>(); 25 PlayerManager pm = new PlayerManager(); 26 Debug.Log(pm.MoveSpeed); 27 Debug.Log(_moveSpeed); 28 }
補足情報(FW/ツールのバージョンなど)
Unity 2020.3.12f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/08 15:28