์ ๋ํฐ WaitForSeconds๋ ํ๋ฒ ๋ง๋ค๊ณ ๊ณ์ ์ฌํ์ฉํด๋ ๋๋๋ฐ
๋ด๊ฐ waitforseconds ๊ฐ์๊ฑฐ ๋ง๋ ๋ค๊ณ ์น๋ฉด ์ธ์ ๋๋๋์ง ๋ด๋ถ์์ ๊ณ์ฐํด์ ๋๋ ค์ค๊ฑฐ ๊ฐ์๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ํ๋ฒ๋ง๋ค๊ณ ๋ค์์ ๋ ๋ถ๋ ์๋ ํ์ด๋จธ๊ฐ ๋ฆฌ์ ์ด ์๋์ ์ฌ์ฌ์ฉ์ด ์๋ ๋ฏํจ
๊ทธ๋ ๋ค๊ณ ์ด๋ ๋ช ์์ ์ผ๋ก ๋ฆฌ์ ํ๋ ์ฝ๋๊ฐ ์๋๊ฒ๋ ์๋๊ณ ์๋ฌต์ ์ผ๋ก ๋ฆฌ์ ์ํค๋ ๋ถ๋ถ์ด ๋ค์ด๊ฐ ๊ฒ ๊ฐ์ง๋ ์์๋ฐ ์ง์ง ๋ฏธ์คํ ๋ฆฌ๋ค..
๋ด๊ฐ waitforseconds ๊ฐ์๊ฑฐ ๋ง๋ ๋ค๊ณ ์น๋ฉด ์ธ์ ๋๋๋์ง ๋ด๋ถ์์ ๊ณ์ฐํด์ ๋๋ ค์ค๊ฑฐ ๊ฐ์๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ํ๋ฒ๋ง๋ค๊ณ ๋ค์์ ๋ ๋ถ๋ ์๋ ํ์ด๋จธ๊ฐ ๋ฆฌ์ ์ด ์๋์ ์ฌ์ฌ์ฉ์ด ์๋ ๋ฏํจ
๊ทธ๋ ๋ค๊ณ ์ด๋ ๋ช ์์ ์ผ๋ก ๋ฆฌ์ ํ๋ ์ฝ๋๊ฐ ์๋๊ฒ๋ ์๋๊ณ ์๋ฌต์ ์ผ๋ก ๋ฆฌ์ ์ํค๋ ๋ถ๋ถ์ด ๋ค์ด๊ฐ ๊ฒ ๊ฐ์ง๋ ์์๋ฐ ์ง์ง ๋ฏธ์คํ ๋ฆฌ๋ค..
์ค์ ์๊ฐ์ ์ฐ๋ฉด ๋์ง์์๊น ๊ตณ์ด 1์ด๋ฅผ ์ธ๋๊ฒ์๋๋ผ 1์ด๋งํผ ์ง๋๊ฑฐ๋ง ๋ณด๋๊ฑฐ์ง
๊ทธ๋ฌ๋๊น ๊ทธ๊ฑธ ์ด๋ป๊ฒ ์ฒดํฌํ ๊ฑฐ๋ ์ด๊ฑฐ์ง ์๊ฐ์ ์ด๊ฑฐ๋ฉด ์ด๋ค๋ฐฉ์์ผ๋ก๋ ์์ํ์ด๋ฐ์ ์ฒดํฌํด์ผ ํ์ง ์์? ๊ฐ์ฒด ํ๋ฒ ๋ง๋ค์ด๋๊ณ ์ผ๋ ๋ฆฌํด๋ง ๊ณ์ํ๋๋ฐ ์ด๋๋จ๊ณ์์ ์์๋๋ค๋๊ฑฐ๋ฅผ ์ฒดํฌํ๋์ง ๋ฏธ์คํ ๋ฆฌ์
๋๊ฐ ์์ ์ง์ ๊ตฌํํ๋ค์น๋ฉด ๋๋๋์๊ฐ๋๋ ค์ค๊ฑฐ๊ฐ๋ค๊ณ ๋งํ๊ฑฐ์ฒ๋ผ ์จ์ํด์ธ์ปจ ํธ์ถํ ๋ ๋๋๋์๊ฐ๋ง ๊ณ์ฐํด์ ๋ฆฌํดํด์ฃผ๋ฉด ํ์ด๋จธํ์์๋๊ฑฐ์๋?
์์ง์์ time.time๊ฐ์ ์๊ฐ์ ์ด๋ป๊ฒ ์ฒดํฌํ๋์ง๋ฅผ ๋ฌผ์ด๋ณด๋๊ฑฐ๋ฉด.. ๊ทธ๊ฑด ๋๋ ๋ชฐ?๋ฃจ
์๋ ์ฝ๋๋ฅผ ๋ด๋ด var w=new waitforseconds(1) ํ๊ณ while (true) yield return w; ๋ผ๊ณ ์ณ๋ด๋ด ์ด๋ผ ์ผ๋๋ฆฌํดw ํ ๋๋ ๊ทธ๋ฅ ๋ฉ์๋ ํธ์ถ์ด ํ๋๋ ์์ด w๋ฅผ ๋ฆฌํด๋ง ํด์ฃผ๋๊ฑฐ์์? ๊ทธ๋ฐ๋ฐ ๊ฐ์ฒด ๋ณ๊ฒฝ ์์ด ๋ฐ๋ณตํด์ ๋ฆฌํด๋ง ํ๋๋ฐ ์ด๋์ ์๋ก์ด 1์ด๋ฅผ ์ฌ๋๋๊ฒ ๊ถ๊ธํ๊ฑฐ์ง
startcoroutine(method) ํ๋ฉด method๋ฅผ ๊ฐ๊ณ ์๋ ์ฝ๋ฃจํด ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง. ์ฝ๋ฃจํด ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์์ผ๋จผ ๋จ.
์ฝ๋ฃจํด ๊ฐ์ฒด๋ ๊ทธ๋ฅ ienumerator๋ฅผ ๊ฐ์ง๊ณ ์๋ yieldinstruction ์๋? ๋ด๋ถ์์ ๋ญ ํ๋๊ฒ ์๋๋ผ ์๋ถ์์ movenext๋ก iterateํด๊ฐ๋ฉด์ ์คํํ ๊ฑฐ๊ฐ์๋ฐ. ๊ฑฐ๊ธฐ๋ค๊ฐ ์ฌ์ ํ waitforseconds ๊ฐ์ฒด๊ฐ ์๋ฌด ๋ฉ์๋ ํธ์ถ๊ฐ์๊ฑฐ ์์ด ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์๋ฆฌ๋ฅผ ๋ชจ๋ฅด๊ฒ ์. ์ผ๋ ๋ฆฌํด ๊ฐ์๊ฑธ ํ ๋ ์๋ฌต์ ์ผ๋ก ๋ญ๊ฐ ํธ์ถ๋ ์๊ฐ ์๋?
์ ๋ํฐ ์ ๋ฐ์ดํธ ๋ฃจํด์์ ์ ๋ฐ์ดํธ ๋ ๋ ๋ฉ์๋๋ฅผ ๊ณ์ ์คํํ ์ง ๋ง์ง๋ ์ฝ๋ฃจํด ๊ฐ์ฒด ๋ด๋ถ์์ ๊ฒฐ์ ํ๋ ๊ฑฐ๋ก ์ดํดํ๊ณ ์๋๋ฐ
coroutine ๊ฐ์ฒด ๋ด๋ถ์ ์ผ๋ก ๋ญ ํ๋๊ฒ ์๋๋ผ ์ฝ๋ฃจํด ๋ฉ์๋์์ ๋ฆฌํดํ ienumerator์ current ๊ฐ์ ๋ฐ๋ผ์ ๊ฒฐ์ ๋๋๊ฑฐ ์๋๊ฐ?
๋ญ ๋งํ๋์ง ์ ๋ชฐ๊ฒ์ด ์ง๊ธ ๊ถ๊ธํ๊ฒ 2์ด๊ธฐ๋ค๋ฆฌ๋ผ ํ์ผ๋ฉด ์ง๊ธ ๋ช์ด๊ฐ ํ๋ ๋์ง ์ด์ผ ์๋๋๊ฑฐ ์๋? ๊ทธ๋ผ WaitForSeconds ๊ฐ์ฒด๊ฐ ๋ฆฌํด๋์๋ ์๊ฐ์ ๊ธฐ๋กํด ๋๋ฉด ๋๋๋ฐ ๊ทธ๊ฑธ WaitForSeconds ๊ฐ์ฒด๊ฐ ์๋๋ผ Coroutine ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋๋ค๋ ์๊ธด๋ฐ
๋ญ ๋งํ๊ณ ์ถ์๊ฑด์ง ์๊ฒ ์. ์๊ฐ์ด ๋๋์ง ์๋๋์ง ๊ฒฐ์ ํ๋ ๋ก์ง์ด waitforseconds์ชฝ์ด ์๋๋ผ ๋ฐ์ ์์ผ๋ฉด ๋๊ธด ๋๊ฒ ๋ค. custumyieldinstruction ์ด ์์ด์ ๊ทธ๊ฑฐ ์ ์ฌํ๊ฒ ๋์ด์์๊ฑฐ๋ผ๊ณ ๋ง ์๊ฐํ๊ณ ์์์
if (ienumerator.current is WaitForSeconds) .. else if (ienumerator.current is WaitForFixedUpdate) .. ์ด๋ฐ ๋๋์ ๊ตฌํ์ด๋ฉด ๊ฐ๋ฅํ๊ธด ํ ๋ฏ
custom์ด๋ ๋ค๋ฅด๊ฒ yieldinstruction์ ์์ ๋ด์ฉ์ด ์ ์์
๋ ธ์ถ์ด ์๋์๋ฟ ๋ค์ดํฐ๋ธ์ชฝ์ ์ ์ฌํ ๊ตฌ์กฐ๊ฐ ์๋ค๊ณ ์๊ฐํ์ง