아름다운 C#은 확장 메서드를 제공한다.
doc 또한 아름답다. [ 여러 블로그나 google로 정리되어있는 내용을 찾아보는 것은 당연하지만 doc는 항상 체크 ]
-> doc 가장 마지막 내용이 핵심
=> List<T> 또는 Array와 같은 IEnumerable<T> 형식의 인스턴스 뒤에 "dot"를 입력하면 IntelliSense 문 완성에서 이러한 추가 메서드를 볼 수 있습니다.
이 아름다운 기능을 Unity에서 어떨 때 쓰면 좋을지 바로 보도록 하면
프로그래밍을 하면서 본인의 라이브러리를 구축하기 마련인데 예로
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public GameObject _go = null;
private void Start()
{
TestExtension();
}
void TestExtension()
{
Naming(_go, "test");
}
public void Naming(GameObject go, string name)
{
go.name = name;
}
}
이런 식으로 Naming()을 자주 사용한다 가정했을 때
보통이라면 위와 같이 Naming()을 사용해야 하지만
위처럼 결국 내용이 적용될 GameObject에서도 Naming()을 바로 불러서 사용할 수 있게 해주는 것
사용 방법도 간단한데
using UnityEngine;
public class Utils : MonoBehaviour
{
public static void Naming(GameObject go, string name)
{
go.name = name;
}
}
확장 메서드를 사용하기 위해서는 정적으로 선언해야 하기 때문에 이런 식으로 본인의 Utility 스크립트를 만든다 치고
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class Extension
{
public static void Naming(this GameObject go, string name)
{
Utils.Naming(go, name);
}
}
확장 메서드도 따로 모아둬야 보기도 좋고 하니 따로 스크립트 하나 이런 식으로 파준다 치고 확장 메서드를 사용할 메서드를 그대로 가져온 뒤 this만 사용해 주면 끝나는 느낌..
-> GameObject go 앞에 this를 통해 go. 뒤에 확장으로 메서드가 나와주고 go.Naming을 했을 때 Utils.Naming()에 들어가 줘서 바로 적용을 시키는 것
예시다 보니 간단하지만 이를 통해 무궁무진하게 조금의 수고를 덜어줄 수 있음
+
조금의 수고를 덜어주는 듯 하지만 정말 자주 사용해야 할 경우에 특히 매우 좋음
* 그러나 협업 시 너무 난무해서 사용하기보단 적절히 당연히 적절히..
'Unity > Tips' 카테고리의 다른 글
Unity Dotween Kill()이 안될 때 확인 (0) | 2022.02.14 |
---|---|
Unity 애니메이션은 코드 없이 CrossFade (3) | 2022.02.13 |
Unity delegate(대리자)와 Action 간단하지만 명확하게 + 예제 (0) | 2022.01.02 |
Unity 메모리 관리 간단한 [ UnloadUnusedAssets(), Singleton 사용 시 ] (0) | 2021.12.16 |
OnApplicationFocus, OnApplicationPause (0) | 2021.12.15 |