現在、unityを使って2つのシーン間でゲームオブジェクトのprefabの位置を共有させたいと思っています。今は実装していませんがこのprefabを動かす予定です。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5 6public class GurdPos : MonoBehaviour { 7 public Vector2[] FirstGurdmanPos; 8 public int GurdSize; 9 10 private static Vector2[] GurdmanPos; 11 private GameObject[] Gurd; 12 13 private static int SceneNum = 0; 14 15 // Use this for initialization 16 void Start () { 17 GameObject[] Gurd = GameObject.FindGameObjectsWithTag("gurdman"); 18 19 if (SceneNum == 0) 20 { 21 for (int i = 0; i < GurdSize; i++) 22 { 23 Gurd[i].transform.position = FirstGurdmanPos[i]; 24 } 25 } 26 else 27 { 28 for (int i = 0; i < GurdSize; i++) 29 { 30 Gurd[i].transform.position = GurdmanPos[i]; 31 } 32 } 33 } 34 35 // Update is called once per frame 36 void Update () { 37 if (Input.GetKeyDown("z")) 38 { 39 SceneManager.LoadScene("test2"); 40 for (int i = 0; i < GurdSize; i++) 41 { 42 ReturnPos(); 43 } 44 } 45 } 46 47 public static Vector2[] ReturnPos() 48 { 49 var P = new GurdPos(); 50 51 SceneNum++; 52 for (int i = 0; i < P.GurdSize; i++) 53 { 54 GurdmanPos[i] = P.Gurd[i].transform.position; 55 } 56 57 return GurdmanPos; 58 } 59}
上記のスクリプトを書いてみたのですが下の部分でエラーが出ます。どこを直せばいいかわかりません。教えてください。
C#
1 Gurd[i].transform.position = GurdmanPos[i];
<エラー>
シーンを遷移するときにというエラーがでます。
NullReferenceException:Object reference not set to an instance of an object
GurdPos.Start()(at Assets/GurdPos.cs:32)
<追記>
静的な変数の意味や配列の使い方などプログラム初心者なのであまりよくわかっていません。できれば簡単な説明も少しいただけませんでしょうか。
回答1件
あなたの回答
tips
プレビュー