delegate๊ฐ ํจ์๋ฅผ ๋ณ์๋ก์จ ์ฌ์ฉํ๋๊ฑด ์ดํด๊ฐ ๋๋๋ฐ
๋ค๋ฅธ ํด๋์ค์์ ์ฐธ์กฐํ๋๊ฑด ์ ๋ชจ๋ฅด๊ฒ ์ด์
A์ค๋ธ์ ํธ์ ์์์ค๋ธ์ ํธ๊ฐ B์ธ๋ฐ
A์ค๋ธ์ ํธ์ A.cs์์ abc()ํจ์๋ฅผ B์ค๋ธ์ ํธ์ B.cs์์ ์ฝ๋ฐฑํ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ํด์ผํ๋์ง ๋๋ฌด ํท๊ฐ๋ ค์
A.cs์์ delegate ABC()๋ฅผ ํด์ Awake์์ ํ ๋นํด์ค๋
B.cs์์ ์ด๋ป๊ฒ ํธ์ถํ๋์ง ๋ชจ๋ฅด๊ฒ์ด์...
http://www.csharpstudy.com/CSharp/CSharp-delegate-concept.aspx
๋ธ๋ฆฌ๊ฒ์ดํธ
๋ณด๋ค๋ Action Func ๋ฅผ ์ฐ๋ฉด ๋ ํท๊ฐ๋ฆผ.
๊ณต๊ฐ...
๊ฐ๋จํ ์๊ฐํด์ A์ int๊ฐ์ B๋ก ๋๊ฒจ์ฃผ๋ ค๋ฉด ์ด๋กํด ํด์ผํ ๊น.
๋ง์ ๋ฐฉ๋ฒ์ด์๊ฒ์ง๋ง ๊ฐ์ธ์ ์ผ๋ก B.cs์ public void setfunc(int A_int) {} ์ด๋ฐ ํจ์๋ฅผ ๋ง๋ค์ด์ A.cs์์ ํธ์ถํด์ A์์ B๋ก ๊ฐ์ ์ฎ๊ฒจ์ฃผ๊ฒ์ง
B.cs๋ ์ด์ A์ int๊ฐ์ ์๋๊น ๊ทธ ๊ฐ์ ์์ ์ int B_int ์ ์ฒ๋ฃ๊ณ ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ฉด ๋๊ฒ ์ง
๋ธ๋ฆฌ๊ฒ์ดํธ๋๋๊ฐ๋ค ๋ธ๋ฆฌ๊ฒ์ดํธ๋ก์ค๋ช ํ๋ฉด ๊ฐ๊ฐ์ผ๋๊น Action์ผ๋กํ๋ฉด B.cs์ public void setAction(Action action){} ๋ง๋ค๊ณ A.csํธ์ถํ๊ณ ์ํ๋ ํจ์ ์ง์ด๋ฃ๊ณ B.cs์์ ์ํ ๋ ์ฐ๋ฉด๋๋ค
์์ธํ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค..
๋ธ๋ฆฌ๊ฒ์ดํธ๊ฐ ์๊ธด ์ด์ ๋ ๋ด ํจ์๋ฅผ ๋จ์ด '๋์ ' ์คํํด ์ฃผ๊ธฐ ์ํด์์. ๊ทธ๋์ ๋ด ํจ์๋ฅผ ๋ค๋ฅธ ํด๋์ค์ '์ธ์' ๋ก ๋๊ฒจ์ฃผ๊ณ ๋ฐ๋ ์ชฝ์์๋ ๊ทธ ํจ์๋ฅผ ๋ธ๋ฆฌ๊ฒ์ดํธ.Invoke() ๋ก ์๋ ์ํค๋ ๊ฒ. ๊ทธ๋์ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ '๋๋ฆฌ์' ๋ผ๊ณ ํ๋ ๊ฒ. ์๋ฅผ ๋ค์ด ๋๋ ๋ฐฅ์ฅ์ด๋ผ์ ๋ฐฅ ์ฃผ๋ ํจ์๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ฌ๋ํด๋์ค๋ ๋ฐฐ๊ฐ ๊ณ ํ๋ค ์ด๊ฑฐ์. ๊ทธ๋ฌ๋ฉด ๋ณดํต์ ์ฌ๋์ด ๋ฐฅ์ฅ์ ์ฐธ์กฐํด์ ๋ฐฅ๊บผ๋ด๊ธฐ() ๋ฅผ ์ฝํ๊ฒ ์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด ๋จ์ด '๋ฐฅ์ฅ' ์ด๋ผ๋ ์ฐธ์กฐ๋ฅผ ๋ฐ์ผ ํจ. ์ด๊ฒ ์์กด์ฑ์ ๋ง๋๋๊น, ์์กด์ฑ์ ์ค์ด๊ธฐ ์ํด '์ผ ๊ทธ๋ฅ ๋ ๋ฐฅ์ฃผ๋ ํจ์๋ฅผ ๋ํํ ๋๊ฒจ' ํ๊ณ ๋ฐฅ๊บผ๋ด๊ธฐ() ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋๊ฒ. ์ด๋ฌ๋ฉด ์๋์ ์ด ํจ์๋ฅผ ๋๊ฐ ์ฃผ๋์ง์ ๊ด๊ณ์์ด ๋ฐฅ๊บผ๋ด๊ธฐ() ๋ฅผ ๋ธ๋ฆฌ๊ฒ์ดํธ์ ์ ์ฅํด๋๋ค๊ฐ Invoke() ๋ก ๊บผ๋ด์ฐ๋
๊ทธ๋์ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ฐ๋ฉด ํจ์๋ช ์ด ๋ฌ๋ผ๋ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ๋์ผํ๋ค๋ฉด (ํจ์์ ๊ณ์ฝ์ด ๊ฐ๋ค๊ณ ํจ) ๋ธ๋ฆฌ๊ฒ์ดํธ์๋ ๊ฑธ ์ ์์. ์ธํฐํ์ด์ค๋ ์ด๊ฒ ์๋จ.
๋์ ์คํํด์ค ์๋ ์๋๋ฐ ๋ธ๋ฆฌ๊ฒ์ดํธ๊ฐ ๊ทธ๊ฒ ๋๋ฌธ์ ์๊ธด ๊ฑด ์๋ํ ๋ฐ
Action๊ณผ Func ์ <> ์์ ์๋ ์ธ์๋ค์ด ํจ์ ๊ณ์ฝ์กฐ๊ฑด์. ์ธ์ํ์ ๊ณผ ๋ฐํํ์ ์ ์ ์ํ๋ ๊ฑฐ.
https://stackoverflow.com/questions/8694921/delegates-vs-interfaces-in-c-sharp