Unit[]์๋ค ์ ๋๋ค ํ๋ฆฌํน์ ๋ฃ๊ณ
Unit[]์ ๋ฃ์ ์ ๋๋ค์ ์์ฑ ๋ฒํผ์ ๊ฐ๊ฐ ๋ง๋๋ ๋ฐ๋ณต๋ฌธ์
๋ฐ๋ณต๋ฌธ ๋ด 3,4์ค์ ์ด๋ฏธ์ง๋ ๊ฐ๊ฒฉ ๋ถ์ฌ๋๋๊ฑฐ๋๊น ๋ฌด์ํ๊ณ
๋ง์ค์ AddListener ์ด์ฉ๊ตฌ๋
๋ฒํผ ๋๋ฅผ ์ BuyUnit์๊ฒ i๋ฅผ ์ธ์๋ก ์ฃผ๋ฉด์ ์คํ์ํค๋๋ก ๋ฒํผ ๊ธฐ๋ฅ ๋ฃ๋๊ฑฐ ๋ง์ง?
BuyUnit
์๊ฐ ์ธ์๋ก ๋ฐ์ i๋ ์ฒ์ ๋ฒํผ ๋ง๋ค๋ ์ด i๋ ๋๊ฐ์ ๊ฐ์ด๋๊น
๋๊ฐ์ด Unit[i]๋ฅผ ์จ์ ๋์ผํ ์ ๋์ ๊ฐ๋ฆฌํค๋ ๊ฑธํ ๋ฐ
๋ฒํผ ๋๋ฅด๋๊น ๋ฒํธ๊ฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ค๊ณ ์ค๋ฅ๊ฐ ์๊น
cs:24๋ ์์ delegate ์๋ ์ค์ด๊ณ
cs:50์ BuyUnit์ if๋ฌธ ์๋ ์ค์
์์ฝ: ๋ฐฐ์ด ํฌ๊ธฐ๋งํผ for๋ฌธ i ๋๋ฆฌ๋ฉด์ ๋ฒํผ์ ๋ง๋ค๊ณ ย i๋ฒ์งธ ๋ฒํผ์ ๋ฐฐ์ด์ i๋ฒ์งธ ์ ๋์ ์ํํ๋ ํจ์๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ
์ ๋์ ์ํํ๋ ํจ์๋ i๋ฅผ ๋ฐ์ผ๋๊น ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋๋๋
์ธ์ด๋ฌ์ง
Delegate{BuyUnit(i);} ์ด๋ถ๋ถ์์ i๋ฅผ ๋ฃ์ง๋ง๊ณ ๊ทธ์์ int index = i;๋ก๋ฃ๊ณ Delegate{BuyUnit(index);}
ํ ๋จธ์ง
delegate์ ๋ฌธ์ ์ธ๊ฐ?
๋ธ๋ฆฌ๊ฒ์ดํธ(๋๋ค)๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ๋ฐ๋ณต๋ฌธ์์์ ๋ค์ ธ์ผํ i๊ฐ ์ด๊ฒ๋จ ๊ทธ๋ฌ๊ณ BuyUnitํจ์์ ๊ฐ๊ฐ์ค์ผํ๋๊ฑธ ๋๋ค๊ฑธ๋ ๋ง๋ฅ i๋ฅผ ๊ณต์ ํ๊ฒ๋จ ๊ทธ๋์ ์ง์ญ๋ณ์ index๋ฅผ ์๋กํ ๋นํด์ ๊ฑฐ๊ธฐ์ i๋ฅผ๋์ ํ๊ณ ์๊ฑธ๋ก ๋ฃ์ด์ค