ย ย private IEnumerator ActorTypeRandom(float PreparationTime, int splitCuts)
ย ย {
ย ย ย ย for (int i = 0; i <= splitCuts -1; i++)
ย ย ย ย {
ย ย ย ย ย ย int rand = Random.Range((int)0, (int)2);
ย ย ย ย ย ย if ((rand == 0) && (rand < 1))
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย yield return new WaitForSeconds(PreparationTime / splitCuts);
ย ย ย ย ย ย ย ย myHandDeck = eDeck.Red;
ย ย ย ย ย ย ย ย MyDeckChanger();
ย ย ย ย ย ย }
ย ย ย ย ย ย else if ((1 == rand) && (rand < 2))
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย yield return new WaitForSeconds(PreparationTime / splitCuts);
ย ย ย ย ย ย ย ย myHandDeck = eDeck.Green;
ย ย ย ย ย ย ย ย MyDeckChanger();
ย ย ย ย ย ย }
ย ย ย ย ย ย else if((3 == rand))
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย yield return new WaitForSeconds(PreparationTime / splitCuts);
ย ย ย ย ย ย ย ย myHandDeck = eDeck.Blue;
ย ย ย ย ย ย ย ย MyDeckChanger();
ย ย ย ย ย ย }
ย ย ย ย ย ย ย
ย ย ย ย }
ย ย }
์์ ์ฝ๋๋ ๋ฑ์ ๋ฐ๊พธ๋ ์๊ฐ(PrepartionTime) ๊ฐ์ย splitCuts ๋งํผ ์งค๋ผ์
ํด๋น ์๊ฐ๋งํผ ์์ฐจ์ ์ผ๋ก ๋ฑ์ ๋ณ๊ฒฝ์์ผ์ฃผ๋ ์ฝ๋์ผ
์์) 3์ด ๋์ (PrepartionTIme = 3.0fย ) 0.5์ด ๊ฐ๊ฒฉ (splitCuts = 6)์ผ๋ก ๋ฑ์ ๋ฐ๊ฟ๋ผ.
MyDeckHanger() ํจ์ ํธ์ถํด์ ๋ด ๋ฑ(myHandDeck)์ ๋งค์นญ๋๋ย Active ๊ฐ์ SetActive ํจ์์จ์, True False๋ก ๋ฐ๊ฟ์ฃผ๊ฑฐ๋ ?
๊ทผ๋ฐ ์ด๊ฒ ์ ๋์๊ฐ๋ค๊ฐ ๊ฐ๋์ฉ ์ฝ๋๊ฐ ๋จนํต์ด ๋๋๋ฐ, ์ด๊ฑฐ ๋ญ๊ฐ ๋ฌธ์ ์ผ๊น?
์ด๊ฑฐ ๋ง๊ณ ๋ ๊ฐ๋ ์ฝ๋ฃจํด ๋ฑ์์ย ๋น ๋ฅด๊ณ ย ๋ฐ๋ณต์ ์ด๊ฒย ๊ฒ์ ์ค๋ธ์ ํธ ์ ์ดํ๋ ค๊ณ ํ๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ์นํ๋๋ผ๊ณ
์ด๊ฑฐ ํด๊ฒฐ ๋ฐฉ๋ฒ ์์๊น? ๋ญ๊ฐ ๋ฌธ์ ์ผ๊น? ์ฐธ๊ณ ํ ๋งํ ์๋ฃ ์๋ ๊ณ ์ ์ธ๋ถ์ด ์์ผ๋ฉด ๋์ ์ข
๊ทธ๊ฑด ์ฌ๊ธฐ๋ค๊ฐ ๋ฌผ์ด๋ณผ๊ฒ์๋๋ผ ๋๊ฐ ๋๋ฒ๊ทธ๋ก ์ฐพ์๋ด์ผํ๋๊ฒ^^
์ฝ๋์์ผ๋ก๋ ๋ฌธ์ ์๋๊ฑฐ ๊ฐ์๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จํด์ ํผํด์ผ ๋๋๊ฒ ์๋ ํด์ ๋ฌผ์ด๋ดค๋ค. ๋จผ ์ฐ์๋ฐ๊ธฐ ์๋ ์๋ฆด ํ๊ณ ์์ด
๊ทธ๋๊ทธ๋ ๊ฐ์ ๋๋ฒ๊น ํด
์ ์๋น์ชผ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ณ์ ์ธ๊ฐ
๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ๊ฐ๊ธธ ๊ฐ์ผ ์๋น ์ชผ์ง ๋ง๊ณ
๊ทธ๋๊ทธ๋ ๋ด๊ฐ๋งํ๋๋กํ๋๊น ๋์์ ํ๋ง๋ค์ผ๋ฉด๋ค๋ผ๋๊ฑฐ ^
๋ณ์ ์ก๊ฐ๋ ๋ค
๋ฉ์ฉกํ ๊ธ์ ์์ ์๋น ์ชผ๊ณ ์์ ์ผ๋ ๋ ์ธ์์ด ๋ถ์ํ๋ค. ๋ฐ๋ปํ ๋ฌผ์ด๋ผ๋ ํ ์ ์ฒ๋จน๊ณ ์ ์ด๋ ์๋น ์ ธ์๋ผ
์์ ๋ณ์ ์ฌ๋ผ๊ณ , ์๋ตํจ. ์ผ๋จ WaitForSeconds๊ฐ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ์์ฃผ ์ ๋ฐ์์ผ์ ์คํ ํด๋๊ณ ์ฐ๋ ์ชฝ์ผ๋ก ์์ ํ๊ธฐ๋ก ํจ.
๋๋ ์๋ ์ ๋น์ทํญ ๊ฒฝํ ์๋ ๊ฑฐ ๊ฐ์... ์ฝ๋ฃจํด ์์ฒด๊ฐ ๊ฐ๋น์ง ์ ๋ฐํ๋ ๊ฑฐ๋ผ ์์ฃผ ํธ์ถํด์ผ ํ๋ ๊ฑด ์ฝ๋ฃจํด์ผ๋ก ์์ฐ๊ณ ์ ๋ฐ์ดํธ๋ฌธ์์ Time.deltatime์ผ๋ก ์ ์ดํด์ค - dc App
์ฐธ๊ณ ํ๊ฒ ์ ๊ฐ์ฌ๊ฐ์ฌ
๊ณต์ ์ต์ ํ ์ฐธ๊ณ ๋ฌธ์
https://learn.unity.com/tutorial/fixing-performance-problems#5c7f8528edbc2a002053b595
int rand = Random.Range((int)0, (int)2); ์ด ์ฝ๋์์ ๋์ฌ์ ์๋ ๊ฐ์ 0๊ณผ 1๋ฐ์ ์๋๋ฐ, ๊ทธ ์๋ if else ์ ์กฐ๊ฑด์ด ์ด์ํ์ง ์์? ๊ทธ๋ฆฌ๊ณ ๊ณตํต๋ ์ฝ๋๋ก ์ค์ผ์ ์์๊ฒ ๊ฐ์๋ฐ
๋๊ธ๋ก๋ ์ฝ๋๋ฅผ ์ ๋๋ก ๋ชป์ฌ๋ฆฌ๋ค.
http://colorscripter.com/s/hqzC3kG
์ด๊ฑฐ
์ฐธ๊ณ ๋๋ ๋ด๋ด
๊ทธ๋ฆฌ๊ณ ์ฝ๋ฃจํด์ ๋ฐ๋ณต๋ฌธ์์ ๋ญ๊ฐ ์ ๋๋ก ๋์์ํ๋ค ์ถ์ผ๋ฉด, ๋ฐ๋ณต๋ฌธ ๊ฐ์ฅ ๋ง์ง๋ง์ yield return null ๋ฃ์ด๋ด๋ด. ๊ฑฐ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ด
์, ํ๋ ์ค์ํ๋ค. float PreparationTime, int splitCuts ์ด๊ฑฐ๋ฅผ ๊ฐ์ง๊ณ yield return new WaitForSeconds(PreparationTime / splitCuts); ํ์์? ๊ทธ๋ฐ๋ฐ ์ด๊ฒ float ๋ฅผ int ๋ก ๋๋๋ ๊ฑฐ๋๊น ๋๋๋ก ํ์ ๋ง์ถฐ์ฃผ๋๊ฒ ์ข๋ค. yield return new WaitForSeconds(PreparationTime / (float)splitCuts); ๊ทธ๋์ผ ๋ฌธ์ ๊ฐ ๋์๊น. ์ต์ ํ๊ณ ๋ญ๊ณ ์ผ๋จ์ ๋ฌธ์ ๊ฐ ์์๊ธฐ๋๊ฒ ๋ฒ ์คํธ