인프런 커뮤니티 질문&답변

언리얼님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

인벤토리 실습 #2

gridPanel에서 UI_Inven_Item Destory 중 오류 발생

해결된 질문

21.06.06 21:01 작성

·

189

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

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 06. 06. 22:18

GameObject gridPanel = Get<GameObject>( (int)GameObjects.GridPanel);

위 부분에서 gridPanel이 null이 아닌지 확인해보시기 바랍니다.
breakpoint를 직접 보고 디버깅하는게 원인 파악에 빠를 수 있습니다.

그래도 해결이 안되면 rookiss@naver.com로 프로젝트 압축해서 보내주시기 바랍니다.

1

언리얼님의 프로필 이미지
언리얼
질문자

2021. 06. 07. 21:31

감사합니다. 해결되었습니다!

말씀해주셨던것처럼 enum으로 사용한 GridPanel과 유니티 상의 그리디 패널 이름이 달라서 null로 들어갔었네요!

좋은 강의 감사합니다!