반응형
안녕하세요.
지연실행과 관련되어, Invoke, InvokeRepeating, CancelInvoke에 대해 알아보도록 하겠습니다.
1. Invoke
Unity 스크립트 작업중에 함수가 일정시간만큼 지연된 후 실행이 되게 하고자 할때 Invoke함수를 사용할 수 있습니다.
Invoke함수를 모른다면 코루틴(coroutine)을 사용해서 시간 지연을 준 후 실행되게 할수있지만 단순히 시간을 지연한 후 함수를 실행 시킨다면 Invoke로 쉽게 구현할 수 있습니다.
형식
Invoke("함수명", 지연시간(초));
예제
1
2
3
4
5
6
7
8
9
10
|
void Start()
{
Debug.Log("Start() Time : " + Time.time);
Invoke("FuncInvoke", 5.0f);
}
void FuncInvoke()
{
Debug.Log("FuncInvoke() Time : " + Time.time);
}
|
cs |
다음과 같이 출력이 됩니다.
이렇게 한다면 시작 후 5초 후 FuncInvoke함수가 호출됩니다.
2. InvokeRepeating
Invoke함수는 지연시간 후 한번만 실행이되는데 여러번 반복실행을 위해서는 InvokeRepeating함수를 사용해서 지정한 주기로 반복할 수 있습니다.
형식
InvokeRepeating(함수명, 지연시간, 반복주기);
지연시간만큼 지연된후 반복주기 만큼 계속 반복합니다.
예제
1
2
3
4
5
6
7
8
9
10
|
void Start()
{
Debug.Log("Start() Time : " + Time.time);
InvokeRepeating("FuncInvoke", 5.0f, 1.0f);
}
void FuncInvoke()
{
Debug.Log("FuncInvoke() Time : " + Time.time);
}
|
cs |
다음과 같이 출력됩니다.
5초 후 FuncInvoke함수가 호출되고, 1초마다 FuncInvoke가 계속 반복됩니다.
멈추기위해서는 CancelInvoke함수를 이용합니다.
3. CancelInvoke
실행중인 Invoke함수를 중지합니다
형식
CancelInvoke(함수명);
예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
int m_nCount = 0;
void Start()
{
Debug.Log("Start()");
InvokeRepeating("FuncInvoke", 5.0f, 1.0f);
}
void FuncInvoke()
{
m_nCount++;
Debug.Log("FuncInvoke()");
if( m_nCount >= 5 )
CancelInvoke("FuncInvoke");
}
|
cs |
다음과 같이 출력됩니다.
InvokeRepeating로 인해 FuncInvoke가 5번 반복되면 CancelInvoke함수로 더 이상 반복되지 않도록 합니다.
반응형
'개발공부 > 유니티' 카테고리의 다른 글
[Unity] 유니티 Screen.width가 폰 스펙과 다르게 나오는 문제(테스트 기종 :갤럭시 S8) (0) | 2019.11.02 |
---|---|
[Unity] 유니티에서 해상도 설정 (0) | 2019.10.26 |
[Unity] 유니티 코루틴(Coroutine) (0) | 2019.10.24 |
[Unity] 유니티 점프 (0) | 2019.10.11 |
[Unity] 오브젝트를 키보드 이동 (0) | 2019.10.08 |