monobehavior๋ฅผ ์์๋ฐ๋ ํด๋์ค๋ค
๋ค๊ณ ์์ง๋ง๋ผ ๋ฌผ๋ก ๋ค๊ณ ์์ด๋ ์๊ด์๊ธดํ๋ฐ
์ปดํฌ๋ํธํจํด์ ์ต๊ฐ์ ํ ํฌ๋์ ์ด๋ฌ๋ฉด ๋ชป์ฐ๊ฒ๋ผ
๋ฐ๋ก ๋ถํ์ ๊ฐ์๋ผ์ฐ๋ ๊ธฐ์
๋๋ค๊ฐ Playerํด๋์ค๋ Enemyํด๋์ค๋ฅผ ๋ง๋ค์๋ค ์น์
Player๊ฐ enemy๊ฐ ๋๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋?
์๋ง ์ปดํฌ๋ํธ ์์ฒด๋ฅผ ๊ฐ์๋ผ์ฐ๋๊ฒ ๊ฐ์ฅ ๊น๋ํ ๋ฐฉ๋ฒ์ผ๊ฑฐ์ผ
๊ทผ๋ฐ ์ด๋ฐ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ข ์๋์ด
์์ผ๋ฉด ์๋ผ
(์๋ฌผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์๋ผ์ฐ์ง ์์๋ ๋๋ ์ปดํฌ๋ํธ๋ค์
ํด๋น์ฌํญ ์์ด)
์จ๋ ์ด์์ด๋ฉด ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ฉค๋ฒ๋ณ์๋ก ๋ค๊ณ ์๊ธฐ ๋ณด๋จ
๊ทธ ์ปดํฌ๋ํธ์ ๋ชธํต์ธ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ ๋ค๊ณ ์์
๋ค๊ณ ์์ง๋ง๋ผ ๋ฌผ๋ก ๋ค๊ณ ์์ด๋ ์๊ด์๊ธดํ๋ฐ
์ปดํฌ๋ํธํจํด์ ์ต๊ฐ์ ํ ํฌ๋์ ์ด๋ฌ๋ฉด ๋ชป์ฐ๊ฒ๋ผ
๋ฐ๋ก ๋ถํ์ ๊ฐ์๋ผ์ฐ๋ ๊ธฐ์
๋๋ค๊ฐ Playerํด๋์ค๋ Enemyํด๋์ค๋ฅผ ๋ง๋ค์๋ค ์น์
Player๊ฐ enemy๊ฐ ๋๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋?
์๋ง ์ปดํฌ๋ํธ ์์ฒด๋ฅผ ๊ฐ์๋ผ์ฐ๋๊ฒ ๊ฐ์ฅ ๊น๋ํ ๋ฐฉ๋ฒ์ผ๊ฑฐ์ผ
๊ทผ๋ฐ ์ด๋ฐ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ข ์๋์ด
์์ผ๋ฉด ์๋ผ
(์๋ฌผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์๋ผ์ฐ์ง ์์๋ ๋๋ ์ปดํฌ๋ํธ๋ค์
ํด๋น์ฌํญ ์์ด)
์จ๋ ์ด์์ด๋ฉด ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ฉค๋ฒ๋ณ์๋ก ๋ค๊ณ ์๊ธฐ ๋ณด๋จ
๊ทธ ์ปดํฌ๋ํธ์ ๋ชธํต์ธ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ ๋ค๊ณ ์์
ํ .. ๊ทธ๊ฒ ๋ง๋ค๊ณ ์๊ฐํจ?
๋ ๊ทธ๋ฅ Entity์์ Player๋ Enemy๋ก ํ์ํด์์
๊ทธ๋ฌ๋ฉด ๋ถ๊ธฐ๋ง ์ก์์ผํ์์
๋ถ๊ธฐ๋ฌธ
์ด๋ ต๊ตฐ.. ์๋ฅผ๋ค๋ฉด ํธ๋์คํผ/์ฝ๋ผ์ด๋ ๋ฑ์ ๋ค๊ณ ์์ง๋ง๊ณ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ ๋ค๊ณ ์๋ค๊ฐ ๊ฒ์ปดํฌ๋ํธํด์ ์ฐ๋ผ๋ ๋ง?
ใดใด ๊ทธ ์ฉ๋๋ฅผ ํ์ ํด๋ด ํธ๋์คํผ์ด๋ ์ฝ๋ผ์ด๋๋ฅผ ๊ฒ๋์ค์ ๊ฐ์๋ผ์ธ์ผ์ด ์์ด? ์์์ ๊ทธ๋ผ ํ์์์ด ์ข ์๋์ด๋ ์๊ด์์
ใ ใ ๊ทธ๋ผ ๋ GameObject๋ค๊ณ update ์์ ๊ณ์ GetComponentํธ์ถํ์ ๋๋ Player, Enemy๋ถ๋ชจ๋ก Unit์ด๋ผ๋ ํด๋์ค ๋ง๋ค์ด์ ๊ฐ์๋ผ์ธํ ๋๊น
update์์ ๊ณ์ ๊ฒ์ปดํฌ๋ํธ ํ ํ์์๊ณ ๊ฒ์ปดํฌ๋ํธ ์์ฒด๋ ๋์ ๋๋ฆฌ์์ ๊บผ๋ด์ค๋๊ฑฐ๋ผ ๊ฒ์์๋ ์์ฒญ๋นจ๋ผ ใ ใ ๊ทธ๋ฆฌ๊ณ ๋๊ฐ ๋งํ ๊ตฌ์กฐ๊ฐ ใ ใ ๊ฐ์์ ๋ด๊ฐ ์๊ฐํ ๋ฐฉ๋ฒ์ด์ผ ๋ ๊ทธ๊ฑธ ์ํด์ enum์ด๋ ํ๊ทธ๋ ํด๋น ํด๋์ค๋ฅผ ์๋ณํ๊ธฐ์ํ ๋ณ์๋ฅผ ํ๋ฒ๋ ์ ์ํด์ผํ์์
์ปดํฌ๋ํธ ์์ฒด๋ฅผ ์บ์ฑ์ํ๋๋ฐ update์์ GetComponent ํธ์ถ์ ์ํ๋ค๊ณ ์ด๋ป๊ฒ? GetComponentํ๋ฒ ํธ์ถํ ๋๋ง๋ค GC Allocation ๋ฐ์ํ๋๊ฑด ์๊ณ ์์? ํ๊ฐ์ Player๋ฅผ ์ํด ์๋ฐฑ๊ฐ์ Enemy Update๋ฌธ์์ GetComponentํ๋๊ฑด ๋ฑํ ์ข์ ์ต๊ด์ ์๋๊ฑฐ ๊ฐ์๋ฐ? ๊ทธ๋ฆฌ๊ณ ๋คํ์ฑ์ด์ฉํด์ ์ค๊ณํ๋๋ฐ ์ค๊ณ๊ฐ ์๋ชป๋๊ฑฐ ์๋๊ณ ์์ผ enum์ผ๋ก ํด๋์ค ์๋ณ์ ์ํจ
๋ด ๊ธํ๊ณ ๋ด ์๊ธฐํ๋๊ฒ ๊ฐ์๋ฐ? ๊ฒ์ปดํฌ๋ํธ๋ฅผ ํธ์ถ์ํ๊ณ ๋ถ๋ชจ๋ก ์บ์คํ ํด์ ์ ๊ทผํ์๋ ๊ฒ๊ฐ์๋ฐ ๋ด๊ฐ ๋งํ ๋ฌธ์ ๋ ์ปดํฌ๋ํธํด๋์ค๋ผ๋ฆฌ ์๋ก ์ข ์๋์ด ์๋ค๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ถํ๋ค ๋ ๋ค ํ๋๊ฑฐ ์์ฒด๊ฐ ์ฌ๊ฐํ ์ค๋ฅ๋ผ๋ ๋ป์ ๋๊ฐ Unit์ ๋ค๋ฅธ ํด๋์ค์์ ๋ค๊ณ ์์๋๋ฅผ ๋งํ๋๊ฑฐ์ผ ๊ธ๊ณ GetComponenet๋ก ์ ์ ๋ฐ์ดํธ์์ ๊ณ์ ์ฒดํฌ๋ฅผ ํด์ผํ๋๊ณ ใ ํด๋น์ด๋ฒคํธ๊ฐ ๋ฐ
๋ค๋ฅธํจ์์์ ์ฌ์ฉ์ํ ๊บผ๋ฉด ๋ค๋ฅธ ์ค๋ธ์ ํธ์ GameObject์์ฒด๋ฅผ ๋ค๊ณ ์์ ํ์๊ฐ ์์ง GameObject๋ฅผ ๋งด๋ฒ๋ก ๋ค๊ณ ์๋ค๋๊ฑด ๋ค๋ฅธ ํจ์์์๋ ์ฌ์ฉํ ๊ป ์์ ํด์ผ ํ๋๋ฐ ์๊ธฐ ์ฝ๋ฉํ๋ ๊ฒฝ์ฐ๋ง ์๊ฐํ๋๊ฑด๊ฐ? ๋ ๋๊ฐ ์ด๋ป๊ฒ ์ฝ๋ฉํ๋์ง ์๋ด์ ๋ชฐ๋ฃจ๊ฒ ๋ค
๋ถ๊ธฐ๋ฌธ ๋ง๋ค๊ธฐ ์ซ์ด์ ํ๋ค๋๋ฐ ์ค๊ณ ์ํ๋ฉด ๋ถ๊ธฐ๋ฌธ ์ธ ์ผ ์์ฒด๊ฐ ๋ง์ด ์๊ณ , ํน์ ์ด๋คํด๋ ํ๋ณํํ์ null์ฒดํฌ๋ง ํ๋ฉด๋๊ธฐ ๋๋ฌธ์ ๋ณ์๋ enum์์ฒด๋ฅผ ์์
Dependency Injection์ ๊ณต๋ถํ์๋๊ฒ ์ด๋ฐ?
๋งค๋์ ํ๋ ๋ฐ๋กํ์ ๋์ง๋ ํ์์ด ์์กด์ฑ์ ํด๊ฒฐํด์ฃผ๊ธด ํ์ง๋ง ๊ทธ๊ฒ๊น์ง ์ค๋ช ํ๋ฉด ๊ธธ์ด์ ธ์...