Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 게임제작
- 리듬게임
- Euler
- Unity
- Quaternion
- 소규모프로젝트
- 게임
- ar
- callbyreference
- 델리게이트
- callbyvalue
- 게임개발
- 인터페이스
- AR Foundation
- ExtensionMethod
- 유니티
- 깃허브
- 레이캐스트
- C#
- github
- 병맛게임
- 짐벌락
- ARProgect
- AR게임
- AR세팅
- raycast
- 1인개발
- 로케트
- 확장메서드
- 리듬게임에디터
Archives
- Today
- Total
Ssssong += Dev
[유니티, C#] 확장메서드 본문
확장 메서드란?
- 기존에 제공되는 클래스 또는 외부 라이브러리에 속해 있는 클래스에 새로운 기능을 "상속"이 아닌 메서드를 이용해서 기능을 확장하는 것을 의미한다.
확장 메서드의 특징
- C# 언어의 확장 메서드는 정적 클래스만을 통해서 정의하는 것이 가능하다.
즉, 정적 클래스가 아니면 확장 메서드 자체를 구현하는 것이 불가능하다.
- C# 언어의 확장 메서드를 정의하는 정적 클래스는 반드시 최상단 영역에 위치시켜야 한다.
- 특정 클래스의 중첩 클래스(클래스 안에 클래스를 선언한 형태)로는 확장 메서드를 정의하는 것이 불가능
구조체, 클래스에 기본으로 내장되어 있는 여러 메서드들 이외에
원하는 메서드를 추가하여 사용할 수 있다.
public static class ExtensionMethod
{
//확장메서드
//public static 리턴타입 확장메서드명(this 추가시키고 싶은 타입 변수명, 매개변수...)
public static bool IsBetween(this float value, float min, float max)
{
if(value > min && value < max)
{
return true;
}
else
{
return false;
}
}
}
이러한 확장메서드를 추가하였을 때
void Start()
{
//확장메서드를 통해 float 타입 value에 IsBetween함수를 추가하였다.
if(value.IsBetween(min,max))
{
Debug.Log("value는" + min + "과" + max + "사이의 값이다.");
}
}
static으로 만들었기 때문에 어디서든 float.IsBetween() 처럼 추가기능을 사용할 수 있다.
클래스, 컴포넌트에도 마찬가지로 추가하여 사용 가능하다.
특정 부모 오브젝트를 자주 참조해야 할 때 등, 자주 쓰는 기능을 쉽게 쓸 때 유용하게 사용할 수 있다.
Remap이나 GetAxisAngle 등의 함수를 그간 게임매니저 인스턴스에 넣고 사용했는데 확장메서드로 더 간편하게 사용할 수 있겠다.
*확장메서드 만들 때는 MonoBehaviour를 상속받으면 안된다.
*어떤 기능인지 직관적으로 알아볼 수 있게 추가해야 한다.
'개발 > 공부' 카테고리의 다른 글
[C#] 델리게이트(delegate) (0) | 2022.06.17 |
---|---|
[유니티, C#] 일반화(Generic) (0) | 2022.06.15 |
[유니티] 충돌 검사 짤팁 (0) | 2022.06.14 |
[유니티, C#] foreach, 콜렉션 (0) | 2022.06.14 |
[유니티, C#] 깊은 복사 ConvertAll (0) | 2022.06.13 |