15. 어떻게 실행되는가?
• 그리고 MoveNext()가 실행되면
yield return 3; 이후부터
yield return 5; 이전까지 실행되
고
state를 1로 옮긴다.
다음에 오면
1번 개체를 줘야지...
16. 어떻게 실행되는가?
• 다시 Current를 읽어오면
state가 1이므로 5를 리턴한다.
1번 개체를 줘야지...
17. 어떻게 실행되는가?
• 그리고 MoveNext()가 실행되면
yield return 5; 이후부터
yield return 8; 이전까지 실행되
고
state를 2로 옮긴다.
• 그 다음에 Current를 읽어오면
8을 리턴한다.
• 다시 MoveNext()가 실행되면
콜렉션의 끝이므로 false를 리
턴.
다음에 오면
2번 개체를 줘야지...
18. 결국 컴파일러가 다 해준 거네
• 컴파일러가 코드를 yield return
기준으로 나눠서 클래스를 짜줬
다!
• 덕분에 메서드가 부분부분 나뉘
어서 실행되는 마술처럼 보인
것
• (흑)마술...?
19. 코루틴도 이렇게 만들 수 있다!
• IEnumerator 메서드에서
IEnumerator가 자동생성된다!
• 리턴된 IEnumerator를 받아서
MoveNext()를 실행시키면
코드의 앞부분이 실행된다.
• 그리고 Current에서
WaitForSeconds를 리턴했다면
?
yield return new
WaitForSeconds(1);
20. 코루틴도 이렇게 만들 수 있다!
• Update() 에서 1초가 지났는지
매 프레임마다 확인한다
• 만약 1초가 지났다면
IEnumerator의 MoveNext()
를 호출한다
• 그럼 코드의 다음 부분이 실행
된다!
시간 됐다 일해라
힝…
Update() IEnumerator