달력

62024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

Invoke, InvokeRepeating 



지연 호출, 일정 간격 호출 기능을 가지고 있는 Invoke, InvokeRepeating에 대해 알아보도록 하겠습니다.




  • Invoke

Invoke (string methodName, float time


invoke의 인자 값으로 methodName과 time이 들어 갑니다.


말그대로 첫번째에는 실행할 메소드의 이름을 넣어주고 두번째에는 몇초 후 메소드를 실행시킬것인지 시간을 적어 주시면 됩니다.


아래의 그림으로 예로 들면 "SpawnObject메소드를 2초후에 실행 시켜라" 라는 의미가 됩니다.


사용 예)

public class InvokeScript : MonoBehaviour {
    public GameObject target;
    
    void Start() {
        Invoke ("SpawnObject", 2);
    }
    
    void SpawnObject() {
        Instantiate(target, new Vector3(0, 2, 0), Quaternion.identity);
    }
}




  • InvokeRepeating

InvokeRepeating (string methodName, float time, float repeatRate


invokeRepeating의 인자 값으로 methodName과 time이 들어가며 Invoke와 다르게 repeatRate라는 인자값이 하나더 추가 되었습니다.


time 까지는 Invoke와 동일하며 3번째 인자값은 몇초마다 한번씩 실행을 시킬 시간을 적어주시면 됩니다.


아래의 그림으로 예로 들면 "SpawnObject메소드를 2초후에 1초마다 실행 시켜라" 라는 의미가 됩니다.


사용 예)

public class InvokeRepeating : MonoBehaviour {
    public GameObject target;

    void Start() {
        InvokeRepeating("SpawnObject", 2, 1);
    }
    
    void SpawnObject() {
        float x = Random.Range(-2.0f, 2.0f);
        float z = Random.Range(-2.0f, 2.0f);
        Instantiate(target, new Vector3(x, 2, z), Quaternion.identity);
    }
}



해당 Invoke 함수의 타임 인자값을 랜덤으로 돌릴 수 없습니다.

랜덤 값을 돌리긴 위해서는 코루틴(Coroutine) 라는 것을 이용해야 합니다.


코루틴 사용법 ↓↓↓↓↓


http://iflife1124.tistory.com/18


Posted by JakeGD
|