FindObjectsOfType<T>() 함수와 FindObjectsByType<T>() 함수의 차이점

FindObjetsOfType() 함수를 사용하는데 있어서 FindObjetsByType() 와의 차이점이 궁금해서 찾아보았다


주어진 코드에서는 FindObjectsOfType<T>()FindObjectsByType<T>(FindObjectsSortMode sortMode) 두 함수가 정의되어 있습니다. 이 두 함수는 모두 특정 타입의 객체를 찾아 배열로 반환하며, 제네릭을 사용하여 여러 타입에 대해 동작할 수 있도록 되어 있습니다. 아래에서 각 함수의 차이를 설명하겠습니다.

  1. FindObjectsOfType<T>():
    • 이 함수는 단순히 해당 타입의 모든 객체를 찾아 반환합니다.
    • FindObjectsOfType 함수를 사용하며, includeInactive 매개변수를 false로 설정하여 비활성 상태인 객체는 제외합니다.
    • 반환된 배열은 해당 타입의 모든 활성 상태의 객체를 포함합니다.
public static T[] FindObjectsOfType<T>() where T : Object
{
    return Resources.ConvertObjects<T>(FindObjectsOfType(typeof(T), includeInactive: false));
}
  1. FindObjectsByType<T>(FindObjectsSortMode sortMode):
    • 이 함수는 FindObjectsByType 함수를 사용하며, FindObjectsInactive.Exclude와 정렬 모드(sortMode)를 사용합니다.
    • FindObjectsInactive.Exclude는 비활성 상태인 객체를 제외하도록 하는 옵션입니다.
    • sortMode는 객체를 정렬하는 데 사용되며, 함수 호출자에게 정렬 방식을 지정하는 옵션입니다.
    • 반환된 배열은 해당 타입의 모든 활성 상태의 객체를 포함하며, 필요에 따라 정렬된 상태일 수 있습니다.
public static T[] FindObjectsByType<T>(FindObjectsSortMode sortMode) where T : Object
{
    return Resources.ConvertObjects<T>(FindObjectsByType(typeof(T), FindObjectsInactive.Exclude, sortMode));
}

이렇게 두 함수는 주로 활성 상태의 특정 타입의 객체를 찾는 것이 공통점이지만, 두 번째 함수는 추가적으로 정렬과 비활성 상태의 객체 제외 옵션을 제공하는 점에서 차이가 있습니다.


  Comments,     Trackbacks