public static IEnumerator Wait(float duration){
float elapsed = 0.0f;
while(true){
elapsed += Time.deltaTime;
if (elapsed >= duration)
{
break;
}
yield return null;
}
}
์๋ ๊ธ์์ ์ ๋์ด ์ ์ฝ๋๋ฅผ ์๋ ค์คฌ๋๋ฐ ์ฐ์ฐ๋ ์ง์ ํ๊ณ elapsed ๋ณ์๋ ๊ณ์ ์์ฑ์์ผ ์ค์ผ ํ์ง๋ง ํธํ๋ ๊ทธ ์ ๋๋ ๊ฐ์ํด์ผ์ง ํ๋ค๊ฐ
๊ทผ๋ฐ ๋ค์ ์๊ฐํด๋ณด๋ ์ด ๋ฐฉ์์ผ๋ก 0.1์ด ์ฃผ๊ธฐ๋ก ๋ฃจํ๋ฅผ ์ํค๋ฉด ๋งค๋ฒ Wait๊ฐ ์ฌ์คํ๋ ํ
๋ฐ ๊ทธ๋ผ ๊ฐ๋น์ง ์์ด๋ ๊ฑด ๋๊ฐ์ง ์๋ ์ถ์ด์ ํ๋ฒ ํ์ธํด๋ดค์
๋ด ๋ฅ์ปด์์ 0.1์ด ์ฃผ๊ธฐ๋ก ๋์๊ฐ๋ 1๋ง๊ฐ์ ์ฝ๋ฃจํด ๋ฃจํ๋ฅผ ๋๋ ค๋ณด๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉ์ 8ํ๋ ์๋ง๋ค 350kb์ ๊ฐ๋น์ง๊ฐ ์๊น
๊ทผ๋ฐ new waitforseonds(0.1f)๋ก ๋๋ฆฌ๋ ์ฝ 50ํ๋ ์๋ง๋ค 190kb์ ๊ฐ๋น์ง๊ฐ ์์ด๊ณ ... ํผํฌ๋จผ์ค๊ฐ ๋ ์์ข์๋ฐ?
๊ทธ๋ฅ ์ข ๋ฒ๊ฑฐ๋ก์๋ ์ฌ๋ฌ ๊ฐ์ ๋ฏธ๋ฆฌ ์บ์ฑํด๋๋ค๊ฐ ์ฐ๋๊ฒ ๋ซ์ง ์๋? ๊ทธ๋ผ ๊ฐ๋น์ง๊ฐ ์ ํ ์ ์์ด์์
์๋ ์ด๋ค ๋ฏธ์น๋์ด 0.1์ด ์ฃผ๊ธฐ๋ก 1๋ง๊ฐ์ ์ฝ๋ฃจํด์ ๋๋ฆผ
1๋ง๊ฐ์ ์ฝ๋ฃจํด์ ๋๋ ค์ํ๋ค๋ ๊ฒ ์๋๋ผ ๊ฐ์ ๋น๊ตํ๊ธฐ ์ข๊ฒ ์ซ์๋ฅผ ๋๋ฆฐ๊ฑฐ์์
๋๊ธ์ 0.1์ด ์ฃผ๊ธฐ๋ก 1๋ง๊ฐ ์ฝ๋ฃจํด์ ๋๋ฆฌ๋ ์ํฉ์ด ๊ฑฐ์ ์๋ ๊ฒ์ฒ๋ผ, ์ด์ฐจํผ ํฐ ์๋ฏธ์๋ ๊ฐ๋น์ง ์์์ด๋๊น ๋ฌด์ํ๋๊ฒ ๋ซ๋ค๋๊ฑฐ ๊ฐ์. ์ค๋ฒ์์ง๋์ด๋ง์ด๋ผ๋๊ฑฐ์ง
๊ทธ๋ผ ์ด์ฐจํผ new waitforseconds๋ก ๋๋ฆฌ๋ฉด ๊ฐ๋น์ง๊ฐ ๋ ์์ด๋๋ฐ ์ ์ด์ ์ ๋ ๊ฒ ๋ง๋ค์ด์ ์ฌ์ฉํ ํ์๊ฐ ์์์
๊ธ๊ณ ์ฃผ์ ๊ฐ waitforseconds๋ก ๋๋ฆฌ๋ฉด ๊ฐ๋น์ง๊ฐ ์์ฌ์ ํผํฌ๋จผ์ค์ ์ ์ข์ผ๋ ์บ์ฑํด์ ์ฌ์ฉํ์์ธ๋ฐ ์ด์ ์์ ๊ทธ ์ ๋ ๊ฐ๋น์ง ์์ฑ์ ๋ฌด์ํด๋ ๋๋ค ์ด๋ผ ์๋์์
ํ๋กํ์ผ๋ฌ ๋๋ฆฐ๊ฑฐ ๋ฐ๋ก ์์ฑํจ
ํ๋กํ์ผ๋ฌ ๋๋ฆฐ๊ฑฐ๋ณด๊ณ ์๋ผ ienumerator๋ ์บ์ฑํ์ ๋ ์ฑ๋ฅ ์์ฑํด๋จ๋ค
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ ๋ฐ์ดํธ์์ ๋๋ฆด์๊ฐ ์์์..
๋ญ ์๋ฆฌ์ธ์ง ์์ ๋ชจ๋ฅด๊ฒ ์ง๋ง StartCorutine()๋ ๊ฐ๋น์ง ์์ฑํ๋๊น 0.1์ด๋ง๋ค 1๋ง๊ฐ์ ์ฝ๋ฃจํด์ ๋๋ฆฌ๋ฉด ๊ทธ๋ฅ ์ฝ๋ฃจํด ์์ฑ ์์ฒด๋ง์ผ๋ก ๊ฐ๋น์ง๊ฐ ํญ๋ฐํด๋ ์ด์ํ์ง ์์๋ฏ