UIObj.cs
Getcomponent는 비싸기 때문에, 스크립트 내에서 미리 캐싱해서 쓰고있는데.
Find 함수를 쓰게 되면 매번 Find("name")을 달아줘야 한다.
이 과정에서 캐싱을 위해 생성한 변수의 이름을 변경하거나, 해당 오브젝트의 이름을 변경하는 경우 NewName = transform.Find("OldName").GetCompoenet<Compoenet>();의 형식을 갖게 되는데 이게 점점 누적되면서, NewName과 OldName이 아주 다른 이름이 되어버리는 경우가 종종 생긴다.
이렇게 되면 대응되는 변수와 오브젝트를 찾기가 아주 어렵기 때문에 오브젝트 네임과 변수명을 반드시 일치시켜야만 하는 구조가 있어야 한다고 생각해 하나 만들었다.
만들어두니 꽤 편리해서 여기저기 가져다 쓰는 중이다.
public static class UIObj
{
public static T GetT<T>(Transform parent, string targetName) where T : Component
=> parent.Find(targetName.Substring(1, targetName.Length - 1))?.GetComponent<T>();
public static T GetEldistT<T>(Transform parent) where T : Component
{
T target;
for (int i = 0; i < parent.childCount; i++)
{
target = parent.GetChild(i).GetComponent<T>();
if (target != null)
return target;
}
return null;
}
public static void SetAction(Button btn, UnityEngine.Events.UnityAction action)
{
btn.onClick.RemoveAllListeners();
btn.onClick.AddListener(action);
}
}
'개발 조각글' 카테고리의 다른 글
Processing - Video_Capture가 작동하지 않을 때 (0) | 2022.06.04 |
---|---|
Phthon - Web 정보 긁어오기 (0) | 2022.05.30 |
Unity 씬에서 선택한게 하이라키에서 안잡힐 때 (0) | 2022.03.21 |
전처리 지시어를 사용해 모바일과 에디터에서 rayCast받기 (0) | 2022.03.07 |
linux상에서의 스택 제한 (0) | 2021.09.02 |