C# 중급
🧱 1. Sealed
sealed class MyClass {}
- sealed는 상속 금지 키워드
- 이 클래스를 상속해서 다른 클래스를 만들 수 없음
- Unity에서 MonoBehaviour를 상속한 클래스를 상속하지 못하게 막을 때 유용
🧩 2. Delegate와 Event
✅ Delegate란?
메서드를 변수처럼 저장하고 실행할 수 있는 타입 (함수 포인터 느낌)
delegate void MyDelegate(string msg);
MyDelegate del = ShowMsg;
del("안녕!");
✅ Event란?
Delegate를 외부에서 Invoke 못 하게 감싸는 키워드
public event MyDelegate onJump;
onJump += Jump;
onJump?.Invoke(); // 외부에서는 Invoke 불가
항목DelegateEvent
호출 가능 | O | ❌ |
+= 가능 | O | O |
-= 가능 | O | O |
보호 수준 | 약함 | 강함 |
🎮 3. UnityEvent
public UnityEvent onClick;
onClick?.Invoke();
- Unity의 에디터 연동이 가능한 이벤트 클래스
- UnityAction 타입의 함수를 AddListener()로 연결
- 직렬화 가능 → Inspector에서 함수 드래그 앤 드롭 연결 가능
🔁 4. EventHandler
event EventHandler SomethingHappened;
SomethingHappened?.Invoke(this, EventArgs.Empty);
- .NET 표준 이벤트 패턴
- sender와 event 정보를 함께 넘김
- Unity보다 WinForm, WPF 등에서 많이 사용됨
🧠 5. 익명 함수와 Lambda
Action sayHi = () => Debug.Log("Hi");
sayHi();
Func<int, int> square = x => x * x;
- 익명 함수 (delegate() {})의 축약형
- 간결한 콜백이나 조건 검사에 최적화
- delegate 없이도 사용 가능하지만 내부적으로는 delegate임
🔍 6. Func와 Predicate
✅ Func
Func<int, int> square = x => x * x;
- T → TResult 구조
- 결과를 반환하는 메서드 저장용
✅ Predicate
Predicate<int> isEven = x => x % 2 == 0;
- T → bool 구조
- 조건 검사용 delegate
타입목적시그니처
Func<T, TResult> | 연산, 계산 | int → int |
Predicate<T> | 조건 판별 | int → bool |
⚙️ 7. Action
Action log = () => Debug.Log("로그!");
Action<int> logValue = x => Debug.Log(x);
- void 반환형 delegate
- 리턴값 없는 콜백 처리에 최적
- UnityAction과 유사하지만, UnityEvent와 연결 시에는 UnityAction 사용
🔗 전체 관계도 요약
[ delegate ]
↓
[ Action ] [ Func / Predicate ]
↓ ↓
[ UnityAction ] [ EventHandler ]
↓
[ UnityEvent ]
✅ 마무리 요약표
항목매개변수반환설명
delegate | 자유 | 자유 | 기본 함수 참조 |
event | delegate 기반 | - | 캡슐화된 이벤트 |
UnityEvent | UnityAction | void | Inspector 연결 가능 |
Action<T> | T | void | 리턴 없는 실행 |
Func<T, TResult> | T | TResult | 리턴 있는 함수 |
Predicate<T> | T | bool | 조건 검사 전용 |
'Unity' 카테고리의 다른 글
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 62일차 (2) | 2025.08.18 |
---|---|
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 52일차 (1) | 2025.08.01 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 51일차 (0) | 2025.07.30 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 21일차 (0) | 2025.06.13 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 11일차 (2) | 2025.05.28 |