์ฝ๋ฃจํด์์ ์๋ณด๋ช ๋ น (YieldInstruction)๋ก ํ์ฉ๋๋ ์ด๊ฑฐ์๋(Enumerator)๋ IEnumerator์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ์ ์ ํ ์ ์์ต๋๋ค.
๋ณดํต Enumerator๊ฐ์ ๊ฒฝ์ฐ STL์ ๋ฐ๋ณต๊ธฐ(iterator)์ฒ๋ผ ํ์ฉํ๊ธฐ์ํดย ์ ๋ค๋ฆญํด๋์์์ ํ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
์ด์จ๋ , ์ ๋ํฐ์์ new WaitForSeconds(); new WaitForFixedUpdate(); new WWW(); ๋ฑ๋ฑ๋ง ์ฌ์ฉํ ์ ์๋๊ฒ์ด ์๋๋ผ
์ด ์ด๊ฑฐ์ ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํด ์ง์ ๋ง๋๋๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
IEnumerator ์ธํฐํ์ด์ค ์ ๋๋ค. Current ์ ๊ทผ์์, MoveNext, Rest ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ๋๊ฒ ๊ตฐ์.
์ด๋ฅผ ํ์ฉํด์ WaitForSeconds๋ฅผ ํ๋ด๋ด๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ด ๋๋ค.
์ ์ผ๋จ ์ต์ ๊ตฌํํด์ผํ ์ธ๊ฐ์ง ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋นจ๊ฐ์ค์ด ๋จ๋๊ฑด return์ด ์์ด๊ฒ ์ฃ ?
์ผ๋จ WaitForSeconds๋ ํน์ ์ด๋งํผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฐ์ฒด ์ ๋๋ค.
MoveNextํจ์์ ๊ฒฝ์ฐ true๊ฐ ๋ฐํ๋๋ ๋์ yield return ๋ฌธ์ ๋ณต๊ทํ๊ฒ ๋๋ฉฐ false๊ฐ ๋ฐํ๋๋ฉด ๊ทธ๋ ํ์ถํฉ๋๋ค.
Reset์ ๊ฒฝ์ฐ ๋ฐ๋ก ํธ์ถ๋์ง๋ ์์ผ๋, ์ง์ ํธ์ถํ์ฌ ์ฝ๋ฃจํด์ด false๊ฐ ๋ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋๋ฐ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
์ผ๋จ ๊ตฌํํด๋ณผ๊น์?
๊ตฌํ๋ ๊ต์ฅํ ๊ฐ๋จํฉ๋๋ค.ย
์์ฑ์์์ ๋ช์ด ๊ธฐ๋ค๋ฆด์ง๋ฅผ ์ค์ ํ๊ณ , MoveNext์์ ์ค์ ์๊ฐ์ ์ฒดํฌํ๋ฉด์ ์๊ฐ์ด ์ง๋์ง ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๊ณ ,
์๊ฐ์ด ์๋ฃ๋๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐํ์ ์ Reset์ ํธ์ถํด ์ค๋๋ค.
์ฝ๋ฃจํด ํ ์คํธ ์ฝ๋์ ๋๋ค.
์ด๋ ๊ฒ ์ด๊ฑฐ์๋ฅผ ์ง์ ๋ง๋ค๋ฉด ๋ค์ํ๊ฒ๋ค์ ๋ง๋ค์ ์์ต๋๋ค.~
์ ์ฑ ์ถ
์ฐ์ ์ข์ํ ๊ณ ๋ง์์
๊ฐ์ถ