해결된 질문
작성
·
197
2
안녕하세요 루키즈님. 오류가 발생했는데, 해결되지 않아 질문 드립니다.
NullReferenceException: Object reference not set to an instance of an object
UI_Inven.Init () (at Assets/Scripts/UI/Scene/UI_Inven.cs:26)
UI_Inven.Start () (at Assets/Scripts/UI/Scene/UI_Inven.cs:14)
현재 아래와 같은 오류가 발생했고, 디버그 모드를 통해 기존에 있던 UI_Inven_Item을 Destory 하는 중에 발생하고 있다는 것을 알게 되었습니다.
public override void Init()
{
base.Init();
Bind<GameObject>(typeof(GameObjects));
GameObject gridPanel = Get<GameObject>( (int)GameObjects.GridPanel);
// 있던 거 삭제
foreach (Transform child in gridPanel.transform)
{
// 내 트랜스 폼이 들고 있는 모든 자식들을 순회를 하는 코드
Managers.Resource.Destroy(child.gameObject);
}
//// 실제 인벤토리 정보를 참고해서
//for(int i =0; i< 8; i++)
//{
// GameObject item = Managers.Resource.Instantiate("UI/Scene/UI_Inven_Item");
// item.transform.SetParent(gridPanel.transform); // 부모님 지정
// UI_Inven_Item invenitem = Util.GetOrAddComponent<UI_Inven_Item>(item);
// invenitem.SetInfo("Bind");
//}
}
혹시 원인을 알 수 있을 까요 ? 감사합니다.
답변 2
3
GameObject gridPanel = Get<GameObject>( (int)GameObjects.GridPanel);
위 부분에서 gridPanel이 null이 아닌지 확인해보시기 바랍니다.
breakpoint를 직접 보고 디버깅하는게 원인 파악에 빠를 수 있습니다.
그래도 해결이 안되면 rookiss@naver.com로 프로젝트 압축해서 보내주시기 바랍니다.
1
감사합니다. 해결되었습니다!
말씀해주셨던것처럼 enum으로 사용한 GridPanel과 유니티 상의 그리디 패널 이름이 달라서 null로 들어갔었네요!
좋은 강의 감사합니다!