Instantiateで作成したインスタンスをGameObject[]の配列に登録したいのですが、することが出来ません。
具体的には下記のコードの「ここから問題のコード」というところで、circleオブジェクトをfor関数でInstantiateしつつ、circle[i]の配列に代入しようとしました。
ですが、スクリプトエラーは出なかったのにもかかわらず、次のエラーメッセージが出ました。
NullReferenceException: Object reference not set to an instance of an object Manager_circle.Start () (at Assets/Scripts/Manager_circle.cs:50)
この50行目というのはcircle[i]で始まる箇所です。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Manager_circle : MonoBehaviour 7{ 8 public GameObject circle; 9 10 private GameObject[] circles; 11 public Sprite card_white; 12 public Sprite card_red; 13 14 public int circle_count=1; 15 private float card_x; 16 private float card_y; 17 private GameObject circle_pre; 18 private float circle_x=1; 19 private float circle_y=1; 20 float circle_position_x_minus; 21 float circle_position_x_plus; 22 float circle_position_y_minus ; 23 float circle_position_y_plus ; 24 [SerializeField] 25 private readonly Sprite sprite; 26 private void Awake() 27 { 28 card.GetComponent<SpriteRenderer>().sprite = card_white; 29 30 var g=Instantiate(card, new Vector2(0, 0), Quaternion.identity); 31 g.GetComponent<SpriteRenderer>().sprite = card_red; 32 card_x = card.GetComponent<SpriteRenderer>().bounds.size.x; 33 card_y = card.GetComponent<SpriteRenderer>().bounds.size.y; 34 35 circle_x = circle.GetComponent<SpriteRenderer>().bounds.size.x; 36 circle_y = circle.GetComponent<SpriteRenderer>().bounds.size.y; 37 } 38 void Start() 39 { 40 41 42 circle_position_x_minus = card.transform.position.x - card_x / 2 + circle_x / 2; 43 circle_position_x_plus = card.transform.position.x + card_x / 2 - circle_x / 2; 44 circle_position_y_minus = card.transform.position.y; 45 circle_position_y_plus = card_y / 2 - circle_y / 2; 46 47//----ここからが問題のスクリプト 48 for (var i = 0; i < circle_count; i++) 49 { 50 circles[i]= Instantiate(circle, new Vector2(UnityEngine.Random.Range(circle_position_x_minus, circle_position_x_plus), UnityEngine.Random.Range(circle_position_y_minus, circle_position_y_plus)), Quaternion.identity); 51 } 52 53//----ここまで 54 } 55 56 57 // Update is called once per frame 58 void Update() 59 { 60 61 } 62} 63
最終的には「circleオブジェクトを複数生成し、それをSetActiveで出現させたり消したりしたい」と考えております。
どうかご教授お願いします。
回答1件
あなたの回答
tips
プレビュー