親オブジェクトにアタッチされたスクリプトの変数が子オブジェクトにアタッチされたスクリプトに反映されない問題が起きています。何かを間違えていることによると思いますが、具体的にそれが何かが分かりません。
これらはすべてヒエラルキー上のオブジェクトにアタッチされています。
また、該当の変数が絡まない部分をすべて省略しましたが、必要であれば追記します。
C#
1親オブジェクトのスクリプト 2public class Ichika_player : PlayerStandard 3{ 4 //参照したい変数、これを用いた処理は未実装 5 [System.NonSerialized] public int Ichikahitcount; 6 7 //以下略 8} 9 10親オブジェクトのスクリプトの継承元 11public class PlayerStandard : MonoBehaviour 12{ 13 // 中略 14 15 //参照したい変数、これを用いた処理は未実装 16 public float Power; 17 18 //参照したい変数 19 public int MSholdtime; 20 21 void Update() 22 { 23 //MSholdtimeに関する処理 24 if (Input.GetKey(KeyCode.Z)) //MSキー押下状態の管理 25 { 26 MSholdtime++; //押されている間ずっとカウントアップ 27 } 28 else 29 { 30 MSholdtime = 0; //押されていない場合はずっと0 31 } 32 } 33} 34 35 36子オブジェクトのスクリプト 37public class Ichika_shotposition : MonoBehaviour 38{ 39 //本体 40 public GameObject Player; 41 42 //撃つショット 43 public GameObject shot; 44 45 //親オブジェクトからとりたい変数を保存 46 public int MSholdtime; 47 public int Hit; 48 public float Power; 49 50 // Start is called before the first frame update 51 void Start() 52 { 53 //ここで親を取得 54 GameObject Player = this.transform.parent.gameObject; 55 //親オブジェクトのスクリプトから参照したい変数を代入 56 MSholdtime = Player.GetComponent<Ichika_player>().MSholdtime; 57 Hit = Player.GetComponent<Ichika_player>().Ichikahitcount; 58 Power = Player.GetComponent<Ichika_player>().Power; 59 } 60 61 // Update is called once per frame 62 void Update() 63 { 64 //ここで使いたい、2で割ったあまりが1の時ショットを撃つ 65 if (MSholdtime % 2 == 1) 66 { Instantiate(shot, transform.position, transform.rotation); } 67 }
補足
//親オブジェクトのスクリプトから参照したい変数を代入 という部分を、
Start()に記述すると親と子のMSholdtimeがZキーを入力しても0になるがエラーが出ないことと、
Update()に記述すると子のMSholdtimeだけがZキーを入力しても0になり、以下のエラーが出ることを確認しています
UnassignedReferenceException: The variable Player of Ichika_shotposition has not been assigned.
You probably need to assign the Player variable of the Ichika_shotposition script in the inspector.>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/11 04:35
退会済みユーザー
2020/04/11 04:59
2020/04/11 05:08
退会済みユーザー
2020/04/11 06:03
2020/04/11 06:16