์คํฌ๋ ์ง๋ค๊ฐ ๋ฌธ์ ์ ๋ถ๋ซ์ณค๋๋ฐ ์ง๋ฌธ์ข...
์ผ๋จ ๋ด๊ฐ ๊ตฌ์ํ๋ ค๋๊ฑด ์ฌ๋ฌ ์ ๋ค์ด ์๋ ํ์์ ๋๋ค์ผ๋ก ํฝํด์
๊ฐ๊ฐ์ ์ ์ด ๊ฐ์ง ์ ์๊ฐ(Essence) ํฉ์ฐ์ด ์ผ๋ง๊ฐ ๋๋ฉด ํฝ์ ๋ฉ์ถ๊ณ ์คํฐํ๊ฒ ํ๊ณ ์ถ์ด
์ผ๋จ ์ง ๊ฑด ์๋์ ๊ฐ์
๊ทผ๋ฐ ์ด enemy๋ผ๋ ํด๋์ค๊ฐ ๊ณตํต์ผ๋ก ์ฐ๋๊ฑฐ๋ผ ์ฌ๊ธฐ์ ์คํฏ๊ฐ์ด ์๋ค์ด์๊ณ , ๊ฐ๋ณ ๋ชฌ์คํฐ๊ฐ ์๋์ ๊ฐ์ด Awake ๋จ๊ณ์์ Get component ํ์์ผ๋ก ๊ฐ์ ์ค๋จ๋ง์ด์ผ
enemy=GetComponent<Enemy>();
enemy.stats=stats;
๊ทธ๋ฌ๋ค๋ณด๋๊น ๊ธฐ์กด enemy์๋ stats[Essence]๊ฐ 0์ด ๋์ด์๊ณ , ์๋ค๋ค์ด ์์ง ์คํฐ๋๊ธฐ ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์๋ค์ด๊ฐ์ 0๋ง ๊ณ์ ๋ํ๊ฒ ๋๋์ํฉ์ด์ผ
๊ทธ๋ ๋ค๊ณ ํด์ ๋ชฌ์คํฐ ๊ฐ๋ณ ํด๋์ค๋ก ๋ค์ด๊ฐ๋ ค๋ ๋ฐ๋ณต๋ฌธ์ด ์๋์๊ฐ๊ณ
์ด๋ ค์์ ๋ด์ฐฉํ๋๋ฐ ํน์ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ ์์๊น?
์ฐธ๊ณ ๋ก ์ ๊ธฐ์ ๋ฐ๋ก instantiate๋ฅผ ๋๋ฆฌ๋ฉด ์๋๋๊ฒ, ์คํฐํ๊ธฐ์ ์ ํน์ ํ ์ดํํธ๊ฐ 3์ด์ ๋ ๋์ค๊ณ ๋์ ์์ฑํ๊ณ ์ถ์...
๋ฒ ์ด์ค๋ฐ์ดํฐ๋ฅผ ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ๋ก ๋ถ๋ฆฌํด - dc App
๊ทธ๋ฆฌ๊ณ Enemy์ ๊ทธ ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ (Stats)๋ฅผ ๋ณ์๋ก ๋๊ณ ๋๊ฐ ๊ฐ์คํ๋ ๊ฐ ์ค๋ธ์ ํธ๋ง๋ค ์ ์ ํ ๊ตฌ์ฑ์ ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ๋ฅผ ๋ฃ์ด - dc App
ํน์ stats์ getter๋ฅผ ๊ฐ์ํจ์ํ ํด์ ํ์ Enemy ๊ฐ์ฒด๋ค์ด ๊ทธ๊ฑธ ์ฌ์ ์ ํ๊ฒ ํ๋ฉด ๋จ. ์๋ฅผ ๋ค์ด virtual Stats GetStats() ๋ฅผ ์ ์ํ๊ณ ํ์ ํด๋์ค์์ ์ฌ์ ์ํ๋ฉด ๋๊ฐ์ ์ํฉ์์ ์คํฏ์ด ํ์ ํด๋์ค๊ฐ ์ ์ ํ๊ฑธ๋ก ์ ์ฉ ๋๊ฒ ์ง - dc App
ํ๋กํผํฐ๋ฅผ ์ฌ์ ์ ํด๋ ๋จ - dc App
ํ ๊ทธ๋ฌ๋ฉด Enemy์์ public virtual void Init() ์ ์ํด๋๊ณ
์์ํด๋์ค Bird: Enemy์์,
override void Init() ํจ์๋ง๋ค์ด์ ์์์ stats ๊ฐ ์์ ํ๋ ์ฝ๋๋ฃ์ผ๋ฉด
์ธ๋ถ ๋ค๋ฅธ๊ฑฐ์์ Enem/y.In/it() ์์ผ๋ก ๋ก๊ฒจ์ค๋ฉด ์ค๋ฒ๋ผ์ด๋ ๋๊ฒ ์ฌ์ฉ๋๋๊ฑด๊ฐ์? (/๋ ์ ๋ ฅ์ด์๋์ ์ฝ์ ..)
ใดใด ์๋ชป ์ดํดํจ
์ ํํ๋ virtual Stats GetBaseStats()๋ฅผ ์ ์ํด ์ฌ๊ธฐ์ ๋๊ฐ ๊ธฐ์กด Stats์ ๋ฃ์ด์ค Stats๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ๋ง๋ค๊ณ ๊ทธ๊ฑธ ํ์ ํด๋์ค์์ ์ฌ์ ์ํด ์๋ฅผ๋ค๋ฉด Enemy ํด๋์ค์์๋ GetBaseStats๊ฐ hp๋ง ์ค์ ํ Stats๋ฅผ ๋ฐํํ๋ค๋ฉด Bird์์๋ Speed๋ ์ค์ ํ Stats๋ฅผ ๋ฐํํ๋ ๊ฑฐ์ง. ๊ทธ๋ฆฌ๊ณ ์ด ์ ๋ณด๋ ๋๊ฐ ์คํฌ๋์์ ์คํฐํ๊ธฐ์ ์๋ง ์ฐธ๊ณ ํ๋๊ฑฐ๊ณ . ์คํฐ ์ดํ์ ๋๊ฐ ์ ์ํ Init์์ Stats = GetBaseStats๋ฅผ ํตํด ์์ผ๋ก ๊ด๋ฆฌํ ๋ณ์์ BaseStats๋ฅผ ๋ฃ๋๊ฑฐ๊ณ .
ํ ํ๋... Enemy๋ ๋ชจ๋๊ฐ ๊ณต์ ํ๋ ํด๋์ค๊ณ ๊ฐ๊ฐ์ด ๊ฐ์ง HP๋ ๋ค ๋ค๋ฅผ๊ป๋ฐ ๊ฒฐ๊ตญ ์ค๋ฒ๋ผ์ด๋ ํ๋ค์์ ์คํฌ๋์์๋ ๋ฌด์จ ํจ์๋ก ๋ก๊ฒจ์์ผ๋๋ค๋๊ฑด์ง์? GetBasestats๋ฅผ ์์์ธ ๋ฒ๋ํด๋์ค์์ ์ฌ์ ์ํด์ Speed๋ ๋ฐํํ๊ฒ ๋ง๋ค๋ฉด ์ธ๋ถ์์ ์๋๋ฏธ.GetBaseStats ํ์์ผ๋ก ๋ก๊ฒจ์์๋ speed๋ ๋ฐํ๋๋ค๋ ์๊ธฐ ๋ง๋์? ์คํํด๋ณด๋ฉด ๋๋๊ฑธ ์ ์คํ์ํ๋๊ณ ๋ฌผ์ผ์๋ฉด ์ง๊ธ Enemy๋ ๋ฒ ์ด์ค๋ก๋๊ณ Bird, Skull, Rabbit ๋ฑ๋ฑ์ด ์ ๋ถ GetComponentํ์์ผ๋ก ๋์ด์์ด์ ์น๋ค ๋ฏ์ด๊ณ ์ณ์ผ๋์ ๊ทธ๋์... ใ ใ
์ฆ ์ง๊ธ ๊ฐ๋ณ๋ชฌ์คํฐ ์ ์ํ๋ ์คํฌ๋ฆฝํธ๊ฐ Enemy ์์ํด๋์ค๊ฐ ์๋๋ผ๋ ์ด์ผ๊ธฐ...
๊ทธ๋ฌ๋ฉด ์์ ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ ๋ฐฉ์๋๋ก ๋ง๋ค์ด. EnemyData : ScriptableObject๋ฅผ ์ ์ํ๊ณ Enemy์ EnemyData ๋ณ์๋ฅผ ๋ฌ. ๊ทธ๋ฆฌ๊ณ EnemyData๋ก Bird, Skull, Rabbit์ ๋ฐ์ดํฐ ์์ ์ ๋ง๋ค๊ณ EnemyData์ ์ง์ด๋ฃ์ด
๋ต ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ ํ๋ฒ๋ ์์จ๋ด์ ๊ทธ๋ถ๋ถ์ ๊ณต๋ถ๊ฐ ์ข ํ์ํ ๋ฏ ํฉ๋๋ค ์ด์จ๋ ์คํฌ๋ฆฝํฐ๋ธ์์ ๋ฒ๋ ์ค์ปฌ ๋๋น ๋ฑ๋ฑ ์คํฏ์ ๋ฐ๋ก ์ค๋ EnemyData ํ๋๋ก ๋ฐ๋ณต๋ฌธ์์ ์ ํ๋ ๊ฒ์์ค๋ธ์ ํธ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ก๊ฒจ์ฌ์ ์๋ค๋ ๋ง์์ด์ฃ ?
๊ทผ๋ฐ ์ Enemy๋ ๋ชฌ์คํฐ ํด๋์ค๊ฐ ๊ฐ๋ณ ๊ฐ์ฒด์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค.. ๊ทธ๋ฅ ๋ชฌ์คํฐ ํด๋์ค์ ๋ถ๋ชจ๋ก Enemy๊ฐ ๋๋ฉด ๋ชจ๋ ํด๊ฒฐ ๊ฐ์๋ฐ - dc App
์์ ์ ์กฐ๋๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ์์๋ณด๋ค ์ปดํฌ๋ํธ๊ฐ ๋ซ๋ค๋ ๋ธ๋ก๊ทธ๊ธ ์ฃผ์๋ฃ๊ณ ๋ฐ๋ผํ๋ค๋ณด๋ ์ด์ง๊ฒฝ์ด ๋จ... ใ ใ ใ ใ ใ ์ฌํ ๋ณ๋ฌธ์ ์์๋๋ฐ ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ํฑํ๊ณ ๊ฑธ๋ ค๋ฒ๋ฆฐ๋ฏ
์ปดํฌ๋ํธ ๊ตฌ์ฑ์ด ๋ ๋น์ ๋ณด๋ ๊ฑด ํด๋น ๋์์ด ์์ ํ ๋ณ๋๋ก ๋ถ๋ฆฌ ๋ ์ ์์ ๋ ์ฌ์ผ ํจ. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ ๊ฒ์ด๋ผ๋ฉด ๊ทธ๊ฒ์ ์ฌ์ฉํ ํด๋์ค(์ปดํฌ๋ํธ)๋ ํ๋์ฌ์ผ ํจ. ๊ทธ๋ฆฌ๊ณ ๋ณดํต ์ด๋ฐ ํด๋์ค๊ฐ ๋ช ์ฌ๊ตฌ ํํ์ ํด๋์ค์(Actor, Enemy, ๋ฑ). ์ด๋ฐ ํด๋์ค๋ ๋ณดํต ํ ์ค๋ธ์ ํธ๋น ํ๋๋ฅผ ๊ฐ์ ธ์ผ ํ๋๋ฐ ๋ ๋ฒ์จ ๋๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง? Enemy, Monster(Bird, Skull, ๋ฑ) ์ ์ด์ ๊ตฌ์กฐ๊ฐ ์ ๋ชป ๋์์. ๋ง์ฝ ์ ๋์ ์ธ ๋์์ ๋ํ ๊ธฐ๋ฅ์ ์ปดํฌ๋ํธํ ํ๊ณ ์ถ์๋ค๋ฉด Hostile(์ ๋์ ) ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์์ด์ผ์ง Enemy๋ฅผ ๋ถ์์ผ๋ฉด ์๋ฌ์.
ํ์... ๋ฌด์จ๋ง์ธ์ง ์ดํด๋จ... ใ ใ ... ์ง๊ธ ์ด๋๊ธฐ๋ฅ, ๊ณต๊ฒฉ๊ธฐ๋ฅ ๊ฐ์๊ฑฐ ์ปดํฌ๋ํธ๋ก ๋ฐ๋ก ํด์ ํ์ํ ๋ชฌ์คํฐํํ ๋ง ์ฐฉ์ฐฉ ๋ถ์ฌ์ฃผ๋๊น ํธํ๋๋ผ๊ณ ๊ทผ๋ฐ ์๋๋ฏธ์ ํผํด์ ๋๊ฑฐ, ๋ฆฌ์ง๋๋ฐ๋ ๋ฑ๋ฑ ๋ค ๋ชฐ๋นตํด๋๊ณ ๊ฐ๋ณ ๋ชฌ์คํฐ(๋ฒ๋ ์ค์ปฌ ๋ฑ๋ฑ)์ด ์๋๋ฏธ๋ฅผ ๊ณ์ ๋ก๊ฒจ์ค๊ฒ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๊ณ ์์ด์ ํ์ด ์ง์ ํ ๋ฌธ์ ๊ฐ ์๋๊ฑฐ๊ฐ์ ์ข ๋ ๊ณต๋ถํด์ ๊ฐ์์์ด๋ณผ๊น ์ถ๋ค
๊ทธ๋ฅ is a ๊ด๊ณ๋ฉด ์์ has a ๊ด๊ณ๋ฉด ๊ฒฐํฉ(์ปดํฌ์ง์ , ์ปดํฌ๋ํธํ) ํด์ผํจ. Monster has enemy๋ ๋ง์ด ์๋๋๋ฐ Monster is enemy๋ ๋ง์ด ๋์ง? ๊ทธ๋๊น ์์์์ผ์ผํจ. - dc App
100% ๋์ํจ ์๊ฐ ์ข ๊ฑธ๋ ค๋ ๋์ค์ ๋ ์ด๋ฐ๋ฌธ์ ์์๊ธธ๋ ค๋ฉด ์ง๊ธ ๋ฏธ๋ฆฌ ๊ฐ์์์ด์ผ๊ฒ ์ ๊ฐ์ฌํฉ๋๋ค ์ ๋ฌธ์ ๋ Scriptable object๋ก ์ผ๋จ์ ํด๊ฒฐํ์ด์ ์ ๋ง๊ฐ์ฌํฉ๋๋ค
์ง๋ฌธ๊ผฌ๋ผ์ง ์ง์ง ใ ใ
๋ญ๊ฐ ๋ฌธ์ ์ง ๋งํด์ฃผ๋ฉด ๋ด๋ถํฐ ์ง๋ฌธํ ๋ ์กฐ์ฌํ ๊ป
enemypool์ ์กด์ฌ ๋ชฉ์ ์ด ๋ญ๋?
enemypool์ ์ํ๊ฐ๋ฅํ ์ ํ๋ฆฌํน ๋ฆฌ์คํธ์
์ฅ๋ฌธ์ผ๋ก ์ฐ๊ณ ๋ช๋ฒ์ ์ง์ด๊ฑด์ง ๊ทธ๋ฅ ์ฒ์๋ถํฐ ๋๊น์ง ๋ค ๋ฌธ์ ๋ผ ๋ญ๋ถํฐ ๋ฌธ์ ๋ผ๊ณ ํ๊ธฐ๋ ํ๋๋ค
๊ทธ๋ผ ๊บผ์ ธ ์จ๋ฐ์๋ผ์ผ
์ ๋ฏธ๋ค์ง์๋ผ ์ง์ง ๋ฌด๊ทผ๋ณธ์๋ผ๋ค์ ๋ฌ๋ผ๋ ํ์ฐธ ๋ค๋ฅด๋ค ํ์ ๊ทธ ์ค๋ ฅ์ผ๋ก ํ์ฐ์ ๋๋ค ๋ค์ ธ๋ผ
ใ ใ ใ ใ ใ ใ ์จ๋ฐ ์ง๋ฌธ๊ผฌ๋ผ์ง ์ด์ฉ๊ตฌ ์ง๋ํ๊ธธ๋ ์ง๋ฌธ์ ๋ญ๊ฐ๋ฌธ์ ๋? ์ฒ์๋ถํฐ ๋๊น์ง ๋ค๋ฌธ์ ๋ค ์ด์ง๋ ใ ใ ใ ใ ใ ์ ์ด์ ๋๊ธฐ์ ๋ค๋๋ฉด์ ์ทจ๋ฏธ๋ก ์ ๋ํฐํ๋๊ฑฐ๋ผ ๊ผฌ์ฐ๋ฉด ์ ์ผ๋ฉด ๊ทธ๋ง์ด์ผ~
๋์์ด ์๋ ๊บผ๋ฉด ๋ฅ์น๊ณ ๋์ ๋ฏธ ์ ์ด๋ ๋น ์ธ์ ์จ๋ฐ๋ ์
๋๊ธฐ์ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ์ง๋ฌธ ๊ผฌ๋ผ์ง๋ณด๋ฉด ์ด๋ ์ง์ก๋ณ์ ์ด๋ผ๊ณ ํ๊ธฐ๋ ๋ฏผ๋งํ ์์ค์ธ๋ฐ ํ์ฌํผ ์จ๋ฐ ์๊ฐ๋ฆฌ๋ ์ฒญ์ฐ์ ์์ฌ
๋์ ๋ฏธ๋ ๋ค์ ธ์ ๋นจ์ ๋ ์๊ฒ ๋ค ใ ใ ใ
์ ๊ณต๋ถ์ผ๋ ์๋๋ฐ ๋น์ฐํ๊ฑฐ์๋? ๋์๋ผ๋ ๋ด ์ ๊ณต๋ถ์ผ ๊ทธ๋ ๊ฒ ์์? ๊ฐ๋ฐ ์ฌ๋ ์๋ค๊ณ ์จ๋ฐ ๋๋ถ๋๋๊ผฌ๋ผ์ง๋ด๋ผ ใ ใ ใ ใ ๋๊ฐ์์๋ผ ๋์ํ์์์ด์ ๊บผ์ ธ ์น์๋ผ์ผ
์ญ์ ์ ๋ฏธ๋ค์ง ์๋ผ๋ต๋คใ ใ ใ ์ง๋ฌธ์ด๋ผ๋๊ฑด ๊ผญ ํ๋ฐ์๋ง ์์๋๋๊ฒ ์๋๋ค ๋ณ์ ์ ์ง๋ฌธํ๋ ๊ผฌ๋ผ์ง ๋ณด๋ฉด ์ง์ข ์๊ด์์ด ์์ค์ด ๋์จ๋ค
ใ ใ ใ ใ ใ ๋ญ๊ฐ๋ฌธ์ ์ง๋ ๋ชจ๋ฅด๋ฉด์ ๊ดํ ์๋นํธ๊ณ ์ง๋๊ฐ์๋ผ๊ฐ ์์ง๋ ์ง๋ฌธ๊ผฌ๋ผ์ง ํ๋ นํ๋ค ๋ญ๊ฐ ๋ฌธ์ ๋๊ณ ์จ๋ฐ๋ ์ ใ ใ ใ ใ ใ ์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ค๋ฌธ์ ๋ผ๊ณ ? ๋์๋ผ๋ ๋ง์ฐฌ๊ฐ์ง์ผ
๋์ ๋ฏธ๊ฐ ๋ ๋ณ์๊ฑฐ๋ถํฐ๊ฐ ๋ฌธ์ ์ผ
๊ฒ์ด์ผ.. ๊ธ์ด์ด๋ ์ง๋ฌธ ๋ชปํ๋๊ฑธ๋ก ์ง์์ ๋ถ์กฑํจ์ ๋ณด์์ง๋ง ๋๋ ์ธ๊ฐ์ฑ์ ๋ถ์กฑํจ์ ๋ณด์ด๋ฉด ๋ญ๊ฐ ์ข์๊ฑฐ๋ - dc App
๊ทธ๋ผ ๊บผ์ ธ ์จ๋ฐ์๋ผ์ผ๋ผ๋ฉด์ ์ ์๋ฐ์์๋ผ์ ์ธ๊ฐ์ฑ์ ์๋ณด์ด๋๋ณด๋ค
๋ญ ์ดํดํด ์๊ธฐ๊ฐ ์ ํ๊ณ ์ ์์ธ์ค ์๋ ์ ๋ค์ ์์ ์ ๋์๋ณด์ง ๋ชปํ๊ณ ๋ฌด์กฐ๊ฑด ์์ ์ด ๋ง๋ค ํ๋จํ๊ณ ๋จ์๊ฒ ์ฃ๋๋ฅผ ๋ค์ด๋๋ ๋ชป๋ณผ์๋ ์์ง
์ง๋ฌธ๊ผฌ๋ผ์ง ์ง์ง ใ ใ ๊ฑฐ๋ฆฌ๋ฉด์ ๋์๋ ์๋ ๊ฑฐ๋ฉด์ ์๋น๊ฑฐ๋์๋ผ๋ ๋๊ตฌ? ์ง๋ฌธ์ ๋ํด์ ๋ญ๊ฐ๋ฌธ์ ์ง ํ๋๋ ๋ง๋ชปํ์๋ผ๋ ๋๊ตฌ?
๋ญ๊ฐ ๋ฌธ์ ์ง ์ ๋ฆฌํด์ ์ ๊ณ ์๋ค๊ฐ ๋์๋ผ ์ํ๋ ๊ผฌ๋ผ์ง ๋ณด๊ณ ๊ทธ๋ฅ ๋ซ์๋ค^^ ์ ๋ฏธ๋ค์ง์๋ผํํ ์กฐ๊ธ๋ ๋์๋ ์์์ง ๋ฐฉํด๋ ๋ ์์์ด๋
๋์๋ผ ๋๊ฐ๋ฆฌ๋ก๋ ๋ํํ ๋์ ์ ๋์๋จ ใ ใ ๊ฑฑ์ ๋ง๊ณ ๊ฐ๊ธธ๊ฐ๋ผ ๋ธ ์ ์๋ผ์ผ
๋งํด์ค๋ ๋๊ฐ์ ๋ณ์ ๋๋๊ฐ๋ฆฌ์๋ ์ดํด ๋ชปํด์ ๋์ ์๋ ๊ฑฐ๊ฐ๊ธด ํ์ใ ใ
๋ต๊ธ ๊ผฌ๋ผ์ง ์ง์ง ใ ใ
๊ธ์จ์ฒด ์ด๋ค๊ฑฐ ์ฐ์๋์??
๊ธ์จ์ฒด ๊ด๋ จํด์ ๊ฑด๋ ๊ฑด ์์ด์ VS Code์์ ๋ณต๋ถํ๋๊น ์ ๋ ๊ฒ ๋ด๋๋ฐ ์ฒ์ ๊น๋๋ถํฐ VS Code๋ ์ ๊ธ์จ์ฒด์์ ์๋ง VSCode ๊ธฐ๋ณธ๊ธ์จ์ฒด ์ผ๋ฏ?
๊น๋ํ๊ณ ์๋ป๋ณด์๋๋ฐ ๊ธฐ๋ณธ์ด์๊ตฐ์ ๊ฐ์ฌํฉ๋๋ค!