물에 살고싶은 개발자

오브젝트의 고유번호로 핸들링하는법 본문

Unity3D

오브젝트의 고유번호로 핸들링하는법

돼지사랑 2015. 10. 30. 19:52

결론부터 뱉고보면 

유니티에서 오브젝트의 고유번호를 찾는 방법은

gameobject.GetInstanceID()이다.

결과값이 int형태로 리턴되기때문에 비교적 핸들링하기 쉬운편이다.


일반적으로는 게임오브젝트를 핸들링하려 할때 

GameObject TargetObject 

TargetObject = PlayerObject;

형태로 이용하지만, 

오브젝트 풀(메모리풀)과 연동해서 사용할때 GetInstanceID를 찾아야하는 경우가 생긴다


예를들어, 다수의 타겟들을 리스트에 보관하고 있을때 

메모리풀과 연동할 경우 인덱스를 일치시켜서 사용하기 마련인데

메모리풀의 경우 구글에 돌아다니는 모듈들은 주로 리스트의 끝, 또는 앞에서부터

차례대로 스캔하여 없는자리에 새 아이템을 넣거나 아이템이 있는 자리를 풀에 집어넣게 된다.


이 경우에 타겟들을 보관한 리스트와 메모리풀의 리스트의 인덱스가 어긋나는 경우가 생기기 때문에

GetInstanceID가 필요하게 된다.


--------------------------------------------------------------------------------------------------------

추가로..지금 내가 하고있는 프로젝트에서만 그런건지 어떤건지..

아직 원인을 찾지못한 부분이 있는데 실제 인스펙터에서 보이는 

ID와 코드에서 나오는 ID가 2차이가 나는 버그가 있다(인스펙터가 2많음)


원인이 뭘까 고민도 해봣지만 모르겠다 -__-;;;

아무튼 이런 경우도 있으니 GetInstanceID를 사용할 경우엔 꼭 생성할때 로그를 찍어보고

인스펙터창에 이쓴ㄴ 아이디랑 비교해보고 사용하길 바란다.

Comments