Prefab๋์ด์๋ ์ค๋ธ์ ํธ์ ์๋ ๋ฒํผ์ ๊ธฐ๋ฅ ๋ฃ์๋ย
๊ทธ ๊ธฐ๋ฅ์ ํ๋ ์ค๋ธ์ ํธ๋ฅผ Prefab์ผ๋ก ๋ง๋ค์ด์ ์ฌ๊ธฐ ์๋ํฐ์์ ์ ํํด์ผ ํ๋๊ฑฐ๋ก ๋ฐฐ์ ๋๋ฐ
์ด๋ ๊ฒ ํ๋๊น ๋ฒํผ์ ๋๋ฅด๋ฉด Scene์ ์ค๋ธ์ ํธ๊ฐ ์๋ Prefab์ํ์ ๊ทธ ์ค๋ธ์ ํธ์ ๊ธฐ๋ฅ์ด ์คํ๋์ ์ฌ๊ณ ๊ฐ ๋ฉ๋๋ค.
๋ฒํผ์ด ์คํํ๋ ๋์?์ Prefab๋ง๊ณ Scene์ ์ค๋ธ์ ํธ๋ก ์ง์ ํ๊ณ ์ถ์๋ฐ ๊ทธ๊ฑด Prefab์ํ์์๋ ์๋๋๊ฑฐ๊ฐ์ต๋๋ค.
๊ทธ๋ผ ์๋ง ์ด Prefab์ด ์์ฑ๋ ๋๋ง๋ค Start? Awake? ๋จ๊ณ์ ์ง์ OnClickListener๋ฅผ ์ถ๊ฐํด์ ์ํ๋ ๊ธฐ๋ฅ์ ์คํํด์ผํ ๊ฑฐ๊ฐ์๋ฐ
๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋์?
ํ๋ฆฌํน์ ์ปดํฌ๋ํธ์ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ๋๋ง ์ํค๊ณ ํ๋ฆฌํน์ ์ฌ์ ์์ฑํ ๋ ํด๋น ๊ธฐ๋ฅ์ ํ๋ ํจ์๋ฅผ ํด๋ฆญ ์ด๋ฒคํธ์ ๋ฌผ๋ฆฌ์ญ์์ค
ํด๋ฆญ ์ด๋ฒคํธ๋ง ๋ฐ๋์ํจ๋ค๋๊ฒ ๋จผ๊ฐ์?? ์ ๊ธฐ OnClick์ ์ค๋ธ์ ํธ None ์ํ NoFunction??
ํ๋ฆฌํน ์์ฑ์ PrefabComponent.Init(onClick) class PrefabComponent Action _onClick; Init(Action onclick)=>_onClick = onClick; OnClickEvent()=>_onClick?.Invoke();
์ฒ์๋ณด๋ Prefab ์์ฑ๋ฐฉ๋ฒ์ธ๋ฐ ์์ ๋ Unity Doc์ ๋จธ๋ผ ๊ฒ์ํด์ผํ๋์ง์ข ์๋ ค์ค๋์???? ์ ๋ ์ด๋๊น์ง GameObject xxx = Instantiate(....) ์ด๊ฑธ๋ก ์ฌ์ ์์ฑํ๋๋ฐ
๊ทธ๊ฒ์ด ๋ง๋ค. ๋น์ ์ ์คํฌ๋ฆฐ์ท์ ํ๋ฆฌํน ์ด๋ฆ์ด ? ActiveSkillManager ์ธ๊ฐ? ActiveSkillManager์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ ๋ถ์ด์ญ์์ค ActiveSkillManager ์คํฌ๋ฆฝํธ์ public Init(Action onClick) ํจ์๋ฅผ ๋ง๋์ญ์์ค GameObject xxx = Instantiate(...) ActiveSkillManager c = xxx.GetComponenet[ActiveSkillManager](); c.Init( ๊ธฐ๋ฅํจ์ ) ๋ณ์ ๊ฐ์ ๋์จ '<' '>' ๊ฐ ์์ณ์ง๋ค. '[' ']' ๋ฅผ '<' '>' ๋ก ๋ฐ๊พธ์์ค
์ง์ง??? ํ๋ฆฌํน์ด๋ ๊ฐ์ ์ด๋ฆ์ ์คํฌ๋ฆฝํธ ๋ง๋ค๋ฉด ๊ทธ๊ฒ ์๋์ผ๋ก ์ฐ๋??๊ฐ์๊ฒ ๋๋๋ด?? ์ ๊ธฐํ๋ค ํ๋ฒ ํด๋ณผ๊ฒ์
์ ์๋๊ตฌ๋ ์๋ชป์ดํดํจ
์ด๋ฆ์ ์ค์ํ์ง ์๋ค. ๋ณดํต ํธ์์ ๊ทธ๋ ๊ฒ ํ๋ค. ํ๋ฆฌํน์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ์ด๋๊ฒ ์ค์ํ๋ค.
Input๊ณผ ๊ธฐ๋ฅ์ ๋๋๋ค๊ณ ์๊ฐ ํ์ญ์์ค ํ๋ฆฌํน์ ์ธํ๋ง ๋ฐ์ผ์ญ์์ค