Unity 오브젝트들을 찾기 위한 방법 (Find Objects)
Unity 오브젝트들을 찾기 위한 방법 (Find Objects)
오브젝트'들' 에 접근하는 방법은 제약이 좀 있는 느낌이였기 때문에 정리해 보았음
GameObject.FindGameObjectsWithTag
GameObject[] itemList = GameObject.FindGameObjectsWithTag("TileItem");
for (int i = 0; i < itemList.Length; i++) {
BaseItem item = itemList[i].GetComponent<BaseItem>();
//...
}
- 미리 지정한 Tag 를 사용해서 같은 Tag 를 가진 객체들을 가져옴
- 비활성화된 객체에 접근이 안된다고 한다
- 배열이 null 인 경우가 있을 수 있어서 예외처리 필요함
Resources.FindObjectsOfTypeAll 또는 Object.FindObjectsOfType
BaseItem[] itemList = Resources.FindObjectsOfTypeAll<BaseItem>();
for (int i = 0; i < itemList.Length; i++) {
BaseItem item = itemList[i];
//...
}
- 클래스 타잎으로 객체들을 가져옴.
- FindObjectsOfTypeAll 모든유형의 비활성화 된 객체도 가져옴
- FindObjectsOfType 에셋 제외, 비활성화 객체 제외 하고 가져옴
- 둘다 성능 이슈가 있어서(매우 느리다고 되어있음) 매 프레임 호출은 좋지 않다
- 싱글톤 패턴같은 디자인 패턴이나 다른 방법으로 대체하기를 권장
다른 방법으로 대체해서 구현하는 방법 같은 경우는 구글링하면 찾을 수 있을 듯...
비활성화 된 객체에 접근하지 않기는 경우는 1번 방법이 제일 나은 하다
댓글
댓글 쓰기