특정시간 뒤에 함수 호출하도록 설정하기 (WaitForSeconds)
Unity3D/Script / 2012. 11. 21. 16:22
WaitForSeconds라는 메소드가 있는데 C#에서 쓰러면 조금 까다롭게 형식에 맞춰서 작성해줘야 한다.
위 예제와 같이 Awake라는 메소드에서 시간을 두번 출력할때 첫번째 시간을 출력 한 뒤 5초뒤에 두번째 시간을 출력하고자 하는경우 또는 일정시간마다 반복 재귀호출 되는 메소드를 작성하고 싶을때에
'IEnumerator' 라는 인터페이스를 사용하도록 해당 메소드 앞에 적어줘야 한다.
IEnumerator delayTime()
{
{
yield return new WaitForSeconds(1);
Debug.Log("time = " + Time.time );
}
위와 같이 delayTime이라는 메소드를 적어주면 메소드가 호출되면 1를 기다렸다가 1초뒤에 Debug 문장이 실행된다.
IEnumerator 인터페이스를 사용하는 메소드를 실행하기 위해서는
특정 호출 메소드를 이용해야 하는데
StartCoroutine(delayTime);
다른 메서드들 처럼 그냥 메서드명() 으로 호출하면 실행되지 않고 위와 같이 StartCoroutine(메서드명) 으로 호출해야 한다.
일정시간 간격으로 계속 반복되어 실행되는 메서드를 만들러면
void Start () {
StartCoroutine(countTime, 1);
}
IEnumerator countTime(float delayTime)
{
Debug.Log("Time = " + Time.time);
yield return new WaitForSeconds(delayTime);
StartCoroutine( countTime, 1 );
}
StartCoroutine(countTime, 1);
}
IEnumerator countTime(float delayTime)
{
Debug.Log("Time = " + Time.time);
yield return new WaitForSeconds(delayTime);
StartCoroutine( countTime, 1 );
}
위와 같이 적어주면 countTime이 waitForSeconds 명령에 의해 일정시간 만큼 딜레이를 한 뒤 자기자신을 재 호출하게되어
1초 간격으로 계속 반복 호출하도록 할 수 있다.
출처 : http://clack.tistory.com/50
반응형
'Unity3D > Script' 카테고리의 다른 글
폰트의 픽셀정보로 문자열을 Mesh들로 생성하여 보여주기 (0) | 2012.11.24 |
---|---|
Interpolate (0) | 2012.11.22 |
AnimationEvent 추가 방법 (0) | 2012.11.21 |
WaitForSeconds() (0) | 2012.11.21 |
Attributes 설명 모음 (0) | 2012.11.18 |