오래된 코드 리팩토링을 위해 파일 열었다가 마주한 수많은 경고들
Object.FindObjectsOfType(Type)은(는) 사용되지 않습니다.
'Object.FindObjectsOfType has been deprecated.
Use Object.FindObjectsByType instead which lets you decide
whether you need the results sorted or not.
FindObjectsOfType sorts the results by InstanceID,
but if you do not need this
using FindObjectSortMode.None is considerably faster.'
1. Alt + Enter 로 경고를 해결할 경우
코드 위쪽에 [System.Obsolete] 추가.
사전적 의미로는 조금 과격하긴 하지만...
유지보수, 재사용성 등의 다양한 이유로 해당 함수나 클래스 등이 사용되지 않을 때 사용하는 attribute이다.
class TestClass
{
[System.Obsolete]
public void Function1()
{
}
}
해당 attribute를 사용하면 함수를 호출할 때 더 이상 사용하지 않는 코드라는 경고를 출력한다.
2. 다른 코드로 변경하여 사용할 경우
# 배열
var ObjArray = GameObject.FindObjectsOfType(typeof(GameObject));
⇒ var ObjArray = (GameObject[])FindObjectsByType<GameObject>(FindObjectsSortMode.None);
⇒ GameObject[] ObjArray = FindObjectsByType<GameObject>(FindObjectsSortMode.None) as GameObject[];
# 단일
var Obj = GameObject.FindObjectOfType(typeof(GameObject));
⇒ var Obj = GameObject.FindAnyObjectByType(typeof(GameObject));
'Unity' 카테고리의 다른 글
(Unity6) Script Template (0) | 2025.01.08 |
---|---|
[C#] Inheritance / Overriding (0) | 2023.04.11 |