Unity Invoke & C# Invoke
Invoke 는 유니티에서 제공하는 것과 C# 에서 제공하는 것이 전혀 다른 기능이다.
이름은 같지만 역할과 작동 방식이 완전히 다르다.
Unity의 Invoke
- 소속 : MonoBehaviour 클래스 ( Unity 전용 기능 )
- 역할 : 특정 함수를 일정 시간 뒤에 한번 호출하거나 반복적으로 일정 간격으로 호출할 수 있다.
- ▼사용법
Invoke("FunctionName", 2f); // 2초 뒤에 FunctionName 실행
InvokeRepeating("FunctionName", 1f, 3f); // 1초 뒤에 시작해서 3초마다 반복
CancelInvoke("FunctionName"); // 해당 함수 호출 취소
- 특징 :
문자열 기반 호출 → 오타 시 런타임 에러 발생
MonoBehaviour 에 종속 → 일반 C# 클래스에서는 사용 불가
코루틴보다 간단하지만 덜 유연하다
void Start()
{
Invoke("SpawnEnemy", 5f);
}
void SpawnEnemy()
{
Debug.Log("적 등장!");
}
반복적으로 호출하려면 InvokeRepeating
반복 호출을 끊어주려면 CancelInvoke("함수명");
모든 Invoke 를 한번에 취소하려면 CancleInvoke( );
C#의 Invoke
- 소속 : 델리게이트 ( Delegate ) 또는 이벤트 ( Event ) 객체
- 역할 : 델리게이트에 연결된 메서드들을 호출하는 기능
저 함수들을 전부 실행해! 의 의미이다. - ▼사용법 :
Action myAction = MyFunction;
myAction.Invoke(); // MyFunction() 실행
- 특징 :
정적 언어적 기능 → Unity와 무관 , C# 표준 기능
문자열이 아니다. 컴파일 시점 타입 체크 가능
델리게이트나 이벤트와 함께 사용한다
using System;
void Start()
{
Action onClick = OnButtonClick;
onClick.Invoke(); // OnButtonClick 실행
}
void OnButtonClick()
{
Console.WriteLine("버튼 클릭됨!");
}
정리
- Unity의 Invoke : 일정 시간 후 함수 실행
- C#의 Invoke : 델리게이트로 등록된 함수(들) 호출
'🧊Unity Basic > 코루틴&이벤트' 카테고리의 다른 글
| 유니티 액션 ( Unity Action ) (0) | 2025.10.20 |
|---|---|
| 유니티 이벤트 ( Unity Event ) (0) | 2025.10.20 |
| Coroutine 핵심 키워드 (0) | 2025.10.18 |
| WaitForSeconds vs WaitForSecondsRealtime (0) | 2025.10.18 |
| IEnumerable vs IEnumerator (0) | 2025.10.18 |