목표
Extension Methods
- 확장 메서드를 사용하면, 다시 컴파일하거나 원래 형식을 수정하지 않아도 기존 형식에 메서드를 추가할 수 있다.
예시
- 아래는 Vector3 클래스에 ResetTransform 확장 메서드를 추가하는 예시이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 확장 클래스는 static으로 정의해야 한다.
public static class MyExtensionMethods
{
// 확장 메서드 또한 static으로 정의해야 한다.
// this 키워드를 사용하여, 확장할 클래스를 파라미터로 받는다.
public static void ResetTransform(this Transform transform)
{
transform.localRotation = Quaternion.identity; // 회전
transform.localPosition = Vector3.zero; // 이동
transform.localScale = new Vector3(1, 1, 1); // 크기
}
}
public class SampeScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
var _transform = this.gameObject.transform;
_transform.ResetTransform(); // 그럼 Transform 타입의 자료형에 ResetTransform이라는 확장 메서드를 사용할 수 있다.
}
}