発生している問題・エラーメッセージ
NullReferenceException: Object reference not set to an instance of an object CreateSlotScript.OnEnable ()(at Assets/sozai dress/CreateSlotScript.cs:17) Google翻訳 NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません 17行目 CreateSlot (itemDataBase.GetItemData ());
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5public class CreateSlotScript : MonoBehaviour 6{ 7 [SerializeField] 8 private GameObject slot; 9 // 主人公のステータス 10 [SerializeField] 11 private MyItem myItem; 12 // アイテムデータベース 13 [SerializeField] 14 private ItemDataBase itemDataBase; 15 void OnEnable() { 16 // アイテムデータベースに登録されているアイテム用のスロットを全作成 17 17行目 CreateSlot (itemDataBase.GetItemData ()); 18 } 19 // アイテムスロットの作成 20 public void CreateSlot(ItemData[] itemList) { 21 22 int i = 0; 23 24 foreach (var item in itemList) { 25 if(myItem.GetItemFlag (item.GetItemType ())) { 26 // スロットのインスタンス化 27 var instanceSlot = Instantiate (slot) as GameObject; 28 // スロットゲームオブジェクトの名前を設定 29 instanceSlot.name = "ItemSlot" + i++; 30 // 親をMainにする 31 instanceSlot.transform.SetParent (transform); 32 // Scaleを設定しないと0になるので設定 33 instanceSlot.transform.localScale = new Vector3 (1f, 1f, 1f); 34 // アイテム情報をスロットのProcessingSlotに設定する 35 instanceSlot.GetComponent <ProcessingSlot>().SetItemData (item); 36 } 37 } 38 } 39} 40 41 42using System.Collections; 43using System.Collections.Generic; 44using UnityEngine; 45 46public class ItemDataBase : MonoBehaviour 47{ 48 ItemData[] itemlists = new ItemData[2]; 49 50 // Start is called before the first frame update 51 void Awake() 52 { 53 itemlists [0] = new ItemData (Resources.Load ("prefab name", typeof(Sprite))as Sprite, "namae",MyItem.Item.FlashLight, "info"); 54 itemlists [1] = new ItemData (Resources.Load ("prefab name2", typeof(Sprite))as Sprite, "nam",MyItem.Item.FlashLight, "info"); 55 56 } 57 public ItemData[] GetItemData() { 58 return itemlists; 59 } 60 public int GetItemTotal() { 61 return itemlists.Length; 62 } 63}
試したこと
あるブログを参考にしていて、メッセージ(質問)を送ろうとしたら送信できませんでした。
(その後、色々調べて試行錯誤したが他のエラーが出てしまう)
追記
17行目 CreateSlot (itemDataBase.GetItemData ());
からCreateSlot関数にデータを渡す?時に問題があるようです
(Awake()やOnEnable()はDebug.Log()を使うとコンソールに表示されるので)
補足情報(FW/ツールのバージョンなど)
unity 2018.3.3f1
よろしくおねがいします