private void Start()
{
ShopSlotComponent[] tempSlots = GetComponentsInChildren<ShopSlotComponent>();
for(int i = 0; i < tempSlots.Length; i++)
{
slots.Add(tempSlots[i]);
slots[i].slot.SetItem(DataManager.Instance.SellItemDB.ItemsList[i]);
}
this.gameObject.SetActive(false);
}
해당 구문을 실행하는데 자꾸 null에러가 발생하였다.
public void Start()
{
slot = new ShopSlot();
button = GetComponent<Button>();
button.onClick.AddListener(Select);
}
슬롯은 스타트문에서 초기화 되고 있었는데
구문을 실행하면 slot을 찾을 수 없는 에러가 지속하여 발생 중
위 스크립트 구문이 먼저 실행되는 바람에 아래쪽 스타트가 진행되지 않은 상황에서 불러오는 것 같다.
public void Init()
{
slot = new ShopSlot();
button = GetComponent<Button>();
button.onClick.AddListener(Select);
}
Start문에서 Init문으로 변경하여 강제로 초기화해주기로 결정
private void Start()
{
ShopSlotComponent[] tempSlots = GetComponentsInChildren<ShopSlotComponent>();
for(int i = 0; i < tempSlots.Length; i++)
{
slots.Add(tempSlots[i]);
slots[i].Init();
slots[i].slot.SetItem(DataManager.Instance.SellItemDB.ItemsList[i]);
}
this.gameObject.SetActive(false);
}
for문이 돌때마다 강제로 초기화
잘 실행됨