반응형

안녕하세요 ~ 오늘은 함수를 일정 시간 후 실행 시키는 방법과 반복 시키는 방법을 알려드리려 합니다 !




먼저 함수를 일정 시간 후 실행 시킬 수 있는 Invoke 함수에 대해 알아봅시다 !


1
2
3
4
5
6
7
8
void Start () {
        Invoke("InvokeTest", 2f);
    }
 
    void InvokeTest()
    {
        Debug.Log("Invoke Start !");
    }
cs

사용하실 땐 

Invoke ("지연 실행 시키려는 함수명", 지연시키려는 시간(float자료형));

라고 사용하시면 됩니다. 

만약 위 스크립트 형태로 실행하게 되면 씬 실행 후 2초 후에 InvokeTest 라는 함수가 실행되어서 Console 창에 나오게 됩니다.



그리고 함수를 일정시간마다 반복적으로 실행 시키는 InvokeRepeating 함수가 있습니다.

1
2
3
4
5
6
7
8
    void Start () {
        InvokeRepeating("RepeatingTest", 1f, 3f);
    }
    
    void RepeatingTest ()
    {
        Debug.Log("Repeating Start !");
    }
cs

사용하실 땐

InvokeRepeating ("반복 실행 시키려는 함수명", 지연시키려는 시간 float자료형, 반복 주기 시간 (float 자료형));

라고 사용하시면 됩니다.

만약 위 처럼 사용하게 되면 RepeatingTest 라는 함수가 씬 실행 후 1초 뒤에 실행되고나서 3초 간격으로 반복 실행됩니다.

Console 창에서 보게 되면 1초 후에 한번 출력되고 후에 3초마다 무한 반복 실행되게 됩니다 !



만약 무한 반복이 아닌 일정 횟수만 실행하고 싶다면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    private int count = 0;
 
    void Start () {
        InvokeRepeating("RepeatingTest", 1f, 3f);
    }
 
    void RepeatingTest ()
    {
        Debug.Log("Repeating Start !");
        count += 1;
    }
 
    void Update()
    {
        if (count >= 5)
        {
            CancelInvoke("RepeatingTest");
        }
    }
cs

count (실행 시키고 싶은 횟수)로 조건문을 걸어서 CancleInvoke 함수를 사용하시면 됩니다. CancleInvoke는 반복 실행 시키는 InvokeRepeating을 취소시키는 함수입니다 !



실행시키게 된다면

이런 식이 됩니다 !

"5번 모두 실행되었습니다." 는 CancleInvoke 가 실행되는 업데이트 문에 임의로 삽입했습니다. 혹여나 사용하실 땐 Update 문에 넣게 되면 프레임 마다 실행되기 때문에 비효율적이니 종료하는 코루틴이나 리턴을 이용하시면 됩니다 ~




오늘은 함수 지연 실행 방법에 대해 포스팅 했습니다 ! 게임을 개발하려는 모든 분들에게 조금이나마 도움이 되었으면 좋겠네요 ~

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기