■ Invoke 개념
○ Invoke
Invoke("메서드이름", 딜레이시간);
메서드이름
: 호출할 메서드의 이름을 문자열로 입력합니다.
딜레이시간
: 호출할 메서드가 몇 초 후에 실행될지를 설정합니다.
- 유니티의 Invoke 메서드는 특정 메서드를 일정 시간 후에 호출하도록 예약하는 기능을 제공합니다. 주로 MonoBehaviour 클래스에서 사용할 수 있으며, 딜레이를 적용하여 메서드를 실행할 때 유용합니다.
- 예제코드
- 아래는 Invoke를 사용하여 PrintMessage 메서드를 2초 후에 실행하는 예제입니다.
using UnityEngine;
public class InvokeExample : MonoBehaviour
{
void Start()
{
Invoke("PrintMessage", 2f); // 2초 후에 PrintMessage를 호출
}
void PrintMessage()
{
Debug.Log("Invoke 호출됨!");
}
}
// 이 코드에서는 유니티가 Start 메서드를 호출한 후 2초가 지나면 PrintMessage 메서드가 실행됩니다.
○ InvokeRepeating - 반복 호출
InvokeRepeating("메서드이름", 초기딜레이시간, 반복주기);
- InvokeRepeating 메서드를 사용하면 일정 시간 간격으로 반복하여 메서드를 호출할 수 있습니다.
- 예제코드
using UnityEngine;
public class InvokeRepeatingExample : MonoBehaviour
{
void Start()
{
InvokeRepeating("PrintMessage", 1f, 2f); // 1초 후부터 시작, 2초 간격으로 호출
}
void PrintMessage()
{
Debug.Log("반복 호출 중!");
}
}
// 이 코드에서는 PrintMessage 메서드가 1초 후에 시작하고, 이후 2초 간격으로 계속 호출됩니다.
○ Invoke 중지
- Invoke 또는 InvokeRepeating으로 예약된 메서드를 취소하려면 CancelInvoke 메서드를 사용합니다.
- 특정 메서드의 호출을 취소 :
CancelInvoke("메서드이름");
- 모든 Invoke 호출을 취소 :
CancelInvoke();
- 주의사항
- Invoke는 문자열로 메서드를 호출하므로, 오타가 나면 실행되지 않고 오류가 발생할 수 있습니다.
- 성능에 민감한 경우 Invoke보다는 Coroutine을 사용하는 것이 더 효율적일 수 있습니다.
■ .Invoke()
○ .Invoke() 개념