일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Mac
- flash builder
- sdk
- 아이튠즈
- XML
- AS3
- swf
- Android
- 태그를 입력해 주세요.
- 경로
- class
- 게임
- Flash
- unity3D
- path
- iphone
- Ane
- texture
- builder
- unity
- 3d
- 단축키
- 영어
- 배열
- smartfoxserver
- AIR
- Build
- file
- Game
- ios
Archives
- Today
- Total
상상 너머 그 무언가...
특정시간 뒤에 함수 호출하도록 설정하기 (WaitForSeconds) 본문
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초 간격으로 계속 반복 호출하도록 할 수 있다.