본문 바로가기

Unity/Problems

UnityException 오류

UnityException 라는 오류를 당했다.

 

 

 

GameObject.Find("Hero").transform.GetChild(0) == null

 

이 지점에서 오류가 났다.

코드를 간단히 설명하자면, 버튼 여러개를 만들어, 각버튼 클릭시의 인덱스값을 CreateHero 매개변수로 받는다.

먼저 Hero 이름을 가진 게임오브젝트 껍데기를 동적으로 생성

 

(==null). 동적으로 생성된 Hero의 자식이 없다면, 매개변수로 받은 인덱스로 오브젝트풀에서 프리팹을 가져와서 Hero의 자식으로 넣고,

 

(!=null). 동적으로 생성된 Hero의 자식이 있다면 그 자식을 찾아서 ReleaseAsset으로 비활성화 시키고 오브젝트풀로 넘길려고 했는데, 

 

UnityException이라는 생소한 오류를 당했다.

 

transform.GetChild(0) 이라는 API를 처음 써봤는데, 에러가나서 더 생소했다.

 

추측해본결과 GameObject.Find("Hero")를 찾아서 자식의 인덱스를 반환해줘야하는데,

만약 GameObject.Find("Hero").transform.GetChild(0) 가 null 이라면, 있지도 않은 "Hero" 이름의 게임오브젝트에

접근하는 꼴이 되게된다.

 

당연히 없는 게임오브젝트에 접근은 불가하고, 에러가 터진것같다.

 

 

 

혼자서 해결해 본 결과 

 

 

 

이렇게 수정해서 해결을 보았다.