반응형
FindObjectsOfType<T>()
- 해당 함수로 구해지는 배열 원소들은 하이어라키 배치대로 순서가 보장되지 않는다.
- 즉, 다음과 같이 보여진다.
해결 방법
- 위 문제를 해결하기위해서는 2가지 방법이 있다.
1. 인스펙터에서 직접 드래그 앤 드롭 해준다.
2. FindObjectsOfType<T>로 배열을 구한 뒤, 정렬을 한다.
- 1번과 같은 경우는 노가다가 심해진다. 따라서, 코드로 정렬을 해주는 방법을 취한다.
- 이 때, 배열의 정렬은 transform.GetSiblingIndex() 값을 비교해서 정렬을 해주면 된다.
- SiblingIndex 값은 하이어라키에 배치된 순서의 값을 반환해준다.
코드
using System;
using UnityEngine;
SomeClass[] arr = FindObjectsOfType<SomeClass>();
Array.Sort(arr, (a, b) =>
{
return a.transform.GetSiblingIndex().CompareTo(b.transform.GetSiblingIndex());
});
- 위 코드는 오름차순으로 정렬되기 때문에 내림차순으로 정렬하고 싶으면 return 라인에 a와 b의 위치를 변경하면 된다.
결과
반응형
'Develoment > Unity issue' 카테고리의 다른 글
[유니티] Mixamo 모델 임포트 시 생기는 문제 (0) | 2022.04.15 |
---|---|
[유니티] 스파인 SkeletonAnimation Material 로드가 안되는 현상 (0) | 2022.01.27 |
[유니티] 비주얼 스튜디오 CS0246 에러 (1) | 2021.12.13 |
[유니티] C# 스크립트 자동완성이 안되는 문제 (0) | 2021.12.13 |
[유니티] GPGS 플러그인 ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 해결법 (0) | 2021.09.12 |