상세 컨텐츠

본문 제목

1217 TIL - 트러블 슈팅

카테고리 없음

by lucar 2024. 12. 17. 21:28

본문

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문이 돌때마다 강제로 초기화

 

잘 실행됨