[HappyKit] C# Extension Method를 활용한 Vector 변환 기능

2024. 5. 4. 01:36코드 전시관/Unity

HappyKit : https://github.com/HappyFaceFriend/HappyKit

 

GitHub - HappyFaceFriend/HappyKit

Contribute to HappyFaceFriend/HappyKit development by creating an account on GitHub.

github.com

 

최근에 유니티 개발 중 DOTween을 사용하면서 이건 어떻게 만들었을까.. 하다가

처음으로 C#의 Extension Method에 대해 알게 됐습니다.

Extension Method는 간단하게 말해 static method를 이용해 어떤 클래스에 직접 메소드를 추가하는 기능으로, 상속 없이 기능 확장이 가능하다는 장점이 있습니다.

왜 이제야 알았지 싶었지만, 지금까지 Vector나 Transform에 대해 사용하던 함수들을 사용하기 편하게 바꿀 수 있게 됐습니다.

 

예전부터 잘 써오던 Vector2ToVector3 함수들을 모두 Vector에 대한 Extension으로 재작성 했습니다.

 

//VectorExtensions에 구현한 static 함수들

public static Vector2 ToVector2(this Vector3 vec)
{
    return new Vector2(vec.x, vec.y);
}
public static Vector2 ToVector2XZ(this Vector3 vec)
{
    return new Vector2(vec.x, vec.z);
}
public static Vector3 ToVector3(this Vector2 vec, float z = 0)
{
    return new Vector3(vec.x, vec.y, z);
}
public static Vector3 ToVector3XZ(this Vector2 vec, float y = 0)
{
    return new Vector3(vec.x, y, vec.y);
}

//사용 예시
Vector3 vec = new Vector3(1,2,3);

Vector2 v = vec.ToVector2(); // (1, 2)

Vector3 v2 = v.ToVector3XZ(); // (1, 0, 2)

 

 

 

반응형