์ง๊ธ ๋ชฌ์คํฐ ์์ ๊ตฌ์กฐ๊ฐ
์ถ์ํด๋์ค์ด๊ณ ย ๋ชจ๋ ธ๋นํค์ด๋น์ด๋ฅผ ์์๋ฐ๋ย ์ต์์ ํด๋์ค์ธ Object
๋ฅผ ์์๋ฐ๋ Monster
๋ฅผ ์์๋ฐ๋ Normal๊ณผ Boss
๋ฅผ ์์๋ฐ๋ ๊ฐ๊ฐ์ ๋ชฌ์คํฐ(ex ๊ณ ๋ธ๋ฆฐ, ์คํฌ .....)
์ด๋ ๊ฒ ๋์ด์๊ฑฐ๋ ์?
์ฌ๊ธฐ์ ์ค์ ๋ชฌ์คํฐ ์ค๋ธ์ ํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ๋๊ฑด ์ตํ์ ํด๋์ค(๊ฐ๊ฐ์ ๋ชฌ์คํฐ)์ธ๋ฐ
๊ณตํต์ ํน์ฑ์ ๋ฌถ์ด์ฃผ๋ ค๊ณ Monster ํด๋์ค์ Animator, Rigidbody, NavMeshAgent ๋ฑ๋ฑ์ ๋ณ์๋ก ๋ง๋ค์ด์คฌ๋๋ฐ
์ด๊ฑธ GetComponent๋ก ๋ฐ์์ค๋ ค๊ณ ํ๋๊น ์๋๋ค์?
์ด๊ฒ ์คํฌ๋ฆฝํธ๋ก ์ฌ๋ผ๊ฐ ์ตํ์ ํด๋์ค๊ฐ ์์ฑ๋๋ฉด ์์์ ์ํดย ์์ ์๋ ๋ถ๋ชจํด๋์ค๋ค์ ๋ชจ๋ ์์ฑ๋๋๊ฑฐ๋ ๋ง๋๊ฑฐ ๊ฐ์๋ฐ
GetComponent๋ ํธ์ถํ๋ ์คํฌ๋ฆฝํธ๊ฐ ์ธ์คํํฐ์ ์ฌ๋ผ๊ฐ ์์ด์ผ ํด๋น ์ปดํฌ๋ํธ(animator๋ฑ)๋ฅผย ๋ถ๋ฌ์ฌ ์ ์๋๊ฑด๊ฐ์?
์ด๋ฌ๋ฉด ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๋ฐ๊ฟ์ผ ๋๋์ง ๊ฐ์ด ์์กํ๋ค์
๊ทธ๋ฆฌ๊ณ ์ค์ ์ธ์คํํฐ์ ์คํฌ๋ฆฝํธ๋ก ์ฌ๋ผ๊ฐ ์คํฌ๋ฆฝํธ์ ๋ถ๋ชจ ํด๋์ค๋ค์ ๋ชจ๋ ธ๋นํค์ด๋น์ด์ ํจ์๋ค์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
์ด๊ฒ ์๋์ ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ ๋๋๊ฑด์ง ์ด๋ฒคํธํจ์(Start ๋ฑ)๊ฐย ์ตํ์ ํด๋์ค๋ง ์คํ๋๋ค์
๊ฒ์ปดํฌ๋ํธ๋ก ๋ฐ์๊ฑฐ๋ฉด ๋ถ๋ชจํด๋์ค์ ํ๋๋ฅผ ๋ง๋ค ํ์๊ฐ ์์ง ๊ทธ๋ฅ ํ๋๋ก ์ ๊ทผํ๋ฉด ๋๋๋ฐ..
๊ทธ๋ฅ ํ๋๋ก ์ ๊ทผํ๋ค๋๊ฒ ์ตํ์ ํด๋์ค์์ ์ ๊ทผํ๋ค๋ผ๋๊ฑฐ์ฃ ?
๊ทธ๋ฅ ๋ถ๋ชจ์ ์ ์ธ๋์ด์์ผ๋ฉด ์์์์๋ ์๋ ๋ด๊บผ์ฒ๋ผ ์ ๊ทผํ ์ ์์์
์ ์ด์ ์์๊ด๊ณ๊ฐ ํ์ํ์ง๋ถํฐ ์ฝ๊ฐ ์๋ฌธ์ธ ๊ตฌ์กฐ๊ธด ํ๋ฐ
GetComponent๋ก ๋ถ๋ฌ์ฌ ์ ์์ด ๊ตฌ์กฐ ์ ์ฒด๋ฅผ ์ฌ๋ ค์ค Goblin ํด๋์ค์ void Start()๋ฅผ implementํ๋ฉด ์๋์ผ๋ก Monster ํด๋์ค์ void Start()๋ฅผ ์จ๊น void Start(){ base.Start() } ๊ฐ์์์ผ๋ก ๊ตฌํํ๋ฉด Monster์ Start๋ฅผ ํธ์ถํ๊ณ ๋ค์์ผ๋ก Goblin์ Start๋ฅผ ํธ์ถํจ
๋ถ๋ชจ ํด๋์ค ํจ์ virtual๋ก ์ ์ธํ๊ฑฐ ๋ง์ง?
์ด๋ฒคํธ ํจ์๋ ๋๋ถ์ ํด๊ฒฐํ์ต๋๋ค ใณํฉ๋๋ค
์ ๊ทผ์ ์ด์ private๋ก ๋์ด์๋
์ค๊ณ์ ๋ฌธ์ ๋ ๋๊ธฐ๊ณ ์ง๋ฌธ๋ด์ฉ๋ง ๋ณด์๋ฉด, getcomponent๋ฅผ๋จผ๊ฐ ์๋ชป์ดํดํ๊ณ ์ฐ๊ณ ์๋๊ฑฐ๊ฐ์. ํ๋๋ฅผ ๋ฐ์์ค๋๊ฑฐ๋ฉด ํด๋นํ์ ํ๋๋ฅผ ๋ฐ๋ก๋ฐ์์ค๋ฉด๋๊ณ , ๊ฒ์ปดํฌ๋ํธ๋ ํด๋น์ค๋ธ์ ํธ์์๋ ์ปดํฌ๋ํธ๋ฅผ๊ฐ์ ธ์ค๋๊ฑฐ์
์ค๋ธ์ ํธ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ฐ์์ ์ฝ๋์์ ์ฒ๋ฆฌํ๋ ค๊ณ ํ๋๊ฑด๋ฐ ๊ทธ๋ฌ๋ฉด AddComponent ๋ฐ๋๊ฒ ๋ง๋์?
๋ ๊ทธ๋ฅ ๊ฐ์์์๋ถํฐ ์ ๋ ํ๊ณ ์๋ผ
"์ถ์ํด๋์ค์ด๊ณ ๋ชจ๋ ธ๋นํค์ด๋น์ด๋ฅผ ์์๋ฐ๋ ์ต์์ ํด๋์ค์ธ Object๋ฅผ ์์๋ฐ๋ Monster." ์ด๊ฒ ๋์ฒด ๋ฌด์จ์๋ฆฌ? ์ ๋ ๋จ์์ด๊ณ , ์ด๋จธ๋๋ฅผ ๋ณ์ผ์ ํ ๋จธ๋์ ์์๊ฐ์ ์๋ฆฌ์ฒ๋ผ ๋ค๋ฆฌ๋ค.
ใ ใ ใ ใ ใ ๋ญ์๋ฆฐ์ง ํด๋์ค ๋ค์ด์ด๊ทธ๋จ ํจ ๋ณด๊ณ ์ถ๋ค
Object๊ฐ ๊ทธ UnityEngine.Object๊ฐ ์๋๊ฒ ์ง
๋ชจ๋ฅด๊ฒ ์. System.Object๊ฑด UnityEngine.Object๊ฑด, ์ ๋ฌธ๊ตฌ์์ ์ฌ๊ณ ํ๋ฆ์ด ๋ฉ์ถฐ๋ฒ๋ฆผ. ์์๋ง๋ง๋ฐ๋ ํด๋ค์ด์๊ทธ๋จ์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉด ์ข์๊ฑฐ๊ฐ์๋ฐ..
์์ ์ ๊ฐ์ฒด ์ค๋ธ์ ํธ ๋ชจ๋์ ๊ธฐ์ ํด๋์ค(base calss)๊ฐ ์ ๋ํฐ MonoBehaviour๋ฅผ ์์์ ๋ฐ์ ์ถ์ ํด๋์ค๋ผ๋ ๊ฑฐ์
๋น์ฐํ ์ธ์คํฉํฐ์ ์ฌ๋ผ๊ธฐ ์์ด์ ๊ฐ์ ธ์ฌ ์ ์์. ๊ทธ๋์ AddComponent()์ผ๋ก ํ์ํ ์ปดํจ๋ํธ๋ฅผ ์ถ๊ฐํด์ผ ํจ. Start๋ Awake์์ ๋ณธ์ธ ๋ชจ๋์ ๋ง๊ฒ ๋ฃ์ด์ฃผ๋ฉด ๋๊ณ , ์๋๋ฉด ์์ ํ๋ฆฌํน์ผ๋ก ๋ง๋ค์ด์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํด๋ ๋จ.