반응형

 

 

 

 

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의 위치를 변경하면 된다.

 

 

 

결과

 

 

 

 

 

반응형

+ Recent posts