블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (234)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday



 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 );
    }

위와 같이 적어주면 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
Posted by blueasa
, |