์คํธ๋ ํฐ์ง ํจํด ๋ฐ์์ด ํซํด์ ์์ ๋ง๋ค์ด๋ด.
์ฒด์ ์์ฝ:
์ ๋ ํ ์ด๋ธ - ์คํฌ๋ฆฝํธ์์ด๋ธ ์ค๋ธ์ ํธ,์ดํ SO
ํ๋ ์ธํฐํ์ด์ค - SO, ์ ๋ํฐ ์์ ์ ๋ํ ์ด๋ธ ์์ ํ๋ํ๋กํผํฐ ๋ณ๊ฒฝ ์ฉ์ด ์ํด์.ํจ์์ฌ์ฉ์ํ I์ธํฐํ์ด์ค ๋ค์ค ์์ ๋ฐ Abstract
GameManager - ์ฑ๊ธํด DataAssetManager ์ด๊ธฐํ ๋ฐ ํ๋ฉ
DataAssetManager - ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ ํ ์ด๋ธ์ KeyPair ๋์ ๋๋ฆฌ๋ก ๋ฌถ์ด ์ด๋ฆ๋ง์ผ๋ก ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์ ๊ณต.
Unit - ๋จํ๊ฐ๋ง ์กด์ฌํ๋ Unit ํด๋์ค,SetUnit(string className) ์ผ๋ก ์๋.
๋ฌผ๋ก ํ๋ ์ด์ด ์บ๋ฆญํฐ,ํน์ํ NPC,ํจํด๋ณด์ค๋ชน๋ฑ์ ๋ง๋ค๊ธฐ ์ํด์ Unit์ ์์๋๊ณ ํ์ฅ๋ ์ ์์,,
๋จ์ ์ก๋ชน ๋ฐ์๋ ๋ชจ๋ 1๊ฐ๋ง ์ด๋ค๊ฐ ์ ์ .
SOAttackBase,SOMoveBase๊ฐ ์์ํจํด์์ ์ค๋ฒ๋ผ์ด๋ ํ๊ณ ์ถ์๋ ๊ฐ์ํจ์์ ๊ธฐ๋ฅ์ ๋ฐ๋ก ๋ฌถ์ ์ธํฐํ์ด์ค ์ญํ .
SO ์คํฌ๋ฆฝํธ์์ด๋ธ ์ค๋ธ์ ํธ๋ก ๊ตฌํํ ์ด์ ๋ ์ญ์ SO๋ก ๋ง๋ค์ด์ง ๋ฐ์ดํฐ ํ ์ด๋ธ์์ ์ ๋ํฐ ์๋ํฐ์์ ํ๋กํผํฐ ์กฐ์๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์.
SO~Base ๋ค์ ์ธํฐํ์ด์ค ๋ค์ค์์ ๋ฐ Abstract์ฒ๋ฆฌ ๋์ด์์.
Unit์ ๋ง๋ค๋๋ง๋ค ๋ฐฐ์ด ํฌ๋ฌธ ๋๋ฆด์ ์์ผ๋ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ๋ก ๋์ ๋๋ฆฌ ์ธํ .
์ด ๋งค๋์ ๋ ๊ฒ์๋งค๋์ ๊ฐ ์ ์ผ ์ฒ์์ ์ด๊ธฐํํด์ค์ผํ๋ค.
๊ทธ๋ฅ ExecutionOrder ์ฌ๋ ค๋ฒ๋ฆฌ์ .
์ ๋ ํด๋์ค์ SetUnit,
SetUnit์ AwakeStart์์ ์๋ถ๋ฅด๊ณ ์ง์ ๊ฐ์ฒด ์์ฑํ ๋ถ๋ฌ์ฃผ๋ฉด ๋๋ค.
๋งต,์คํ ์ด์ง ๋ฐ์ดํฐ,UI์ ๋ ฅ ๋ฑ์์ ์ฌ์ฉ์์๊ฒ ClassName๋ง ๋ฐ์์ค๋ฉด ๋๋ ๊ฒ์.
์ฃผ์์๋ ์์ง๋ง ๊ฒ์์ ๋ฐ๋ผ ์ธํฐํ์ด์ค ๋ค์๊ฒ ๋ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋๊ฒจ์ฃผ๊ฒ๋จ.
์์ ํ๋ผ๋ฏธํฐ๋ก ์กด๋์์ฝํ ์ ์์ผ๋ฉด SO๋ฅผ ์ถ๊ฐ ๋์ ํ ๋น์ํ๊ณ ๋ชจ๋ ์ ๋์ด ๊ณตํต๋ SO 1๊ฐ๋ง ์ฐ๊ฒ ํ ์ ์์.
์ฌ๋ด์ผ๋ก ํ๋ ์ธํฐํ์ด์ค๋ค ํํ DeltaTime ๋๊ฒจ์ฃผ๋ฉด FSM๋ง๋ค๊ธฐ ๊ฐ๊ฟ๋จ.
ScriptableObject ๋ฉ๋ด์ฌ์ฉ ๋ชจ๋ฅด๋ ์ฌ๋ ์์๊น๋ด
์ ๋ํ ์ด๋ธ ์ฌ์ฉ,ClassName์ ๋ชฉ์จ๊ฑธ๊ณ ์ง์ผ์ค์ผํ๋ ๋ณ์,ํฅํ ์ ๋ํ๋ฆฌํน ํ๋กํผํฐ์ ๋ฐ์์ค๋, SetUnitํ ๋ ์คํ ๋ง์ด๋ 100% ์ผ์นํด์ผํ๋ค.
์ด๊ฒ ์ ์ฝ์. ํ์ง๋ง ๋ค์ด๋ ๊ฒ ํจ. ์ด๊ฑฐํ์ผ๋ก ํ ์ด๋ธ ์บ๋ฆญํฐ๋ฅผ ๋ถ๋ฅด๊ฒ๋๋ฉด ๋ฐฐ์ด์ด๋ 1๋1 ๋งค์นญ์ผ๋ก ๋ถ๋ฌ์ค๋ ์ฌ๋ฏธ๊ฐ ์์ํ๊ฒ ์ง๋ง
enum์ ์ถ๊ฐํ ๋ ๋น์ฅฌ์ผ์คํ๋์ค๋ฅผ ์ด์ด์ผํ๋ค๋ ์ ์์ ๋ฐ์ดํฐํ ์ด๋ธ ์ฌ์ฉ์ ์๋ฏธ๊ฐ ๋ฌด์ํด์ง.
๊ทธ๋์ ์คํ๊ฐ ๋ ์์์ด๋ string์ผ๋ก ์ฝ์๋ง๋ค๊ณ ํ๋ฆฐ(๊ธฐํ์)์๋ผ๊ฐ ์๋ชปํ ์ฒด์ ๋ก ๊ฐ๋๊ฑฐ.
์ ๋ ํ ์ด๋ธ์ ๋นํค์ด๋น์ด ์ธํฐํ์ด์ค๋ ์ฝ์ ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง
์ฐฝ๋ณ๊ณผ ๊ธฐ์ฌ๋ Move๋ง ๋ค๋ฅด๊ฒ ์๋ํ๋ค.
๋ง์ผ ์ด๊ฑธ ์ ๋ถ Unit ์์ฒด์ ์์,๊ฐ์ํจ์ ์ค๋ฒ๋ผ์ด๋๋ก ๊ตฌํํ๋ค๋ฉด?
Attack*Move์ ๊ฒฝ์ฐ์ ์๋งํผ ๋ง๋ค์ด์ผ Attack๊ณผ Move๊ฐ ๋ค๋ฅด๊ฒ ์๋ํ๋ ์ ๋๋ค์ ๋ง๋ค์์์
๊ทผ๋ฐ ๋ฐ์ดํฐ ํ ์ด๋ธ๊ณผ ์คํธ๋ ํฐ์ง ํจํด์ ์ฌ์ฉํ๋ฉด
์๊ฐ๋ฝ ๊น๋ฑ์ผ๋ก, ๊ทธ๊ฒ๋ ๊ธฐํ์๊ฐ ๊น๋ฑ๊น๋ฑ ํ๋๊ฑธ๋ก ์กฐ๋ฆฝ์ ํ๊ธฐ ๋๋ฌธ์
์ด๋ฐ ๊ฒฝ์ฐ์์๋ฅผ ์ ๋ถ ๊ตฌํํ ํ์๊ฐ ์์.
์ ์ด์ ์ ๋์์ ํจํด์ ๋์ ๊ต์๋ค์ด ๋ชจ๋ฅด๊ณ ๊ตฌ์ธ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฅด์น๋๊ฑฐ
์ ๋-์คํฌ-์ด๋ก์คํฌ-๋ ธ๋์กฑ์ฅ์คํฌ-๋นจ๊ฐ์กฑ์ฅ์คํฌ-์ด๋ก์กฑ์ฅ์คํฌ
์ด๋ด์์ผ๋ก ๊ตฌํ๊ณ์ํด๋ด๋ผ ๋ญ๊ฐ ์กท๋๋ค๋๊ฒ ์๋๊ปด์ง๋?
๊ฒฐ๊ตญ ํ๋กํผํฐ๋ง(์๊น ๋ฑ) ๋ค๋ฅธ ์ผ์ด์ค๊ฐ ์กด์ฌํ ๊ฒ์ด๊ณ ์ฌ๊ธฐ์ ์์์ผ๋ก ๋นผ๋ค๋ณด๋ฉด
"์ ๋ญ๊ฐ ๋นํจ์จ์ ์ธ๋ฐ"
์ถ์ด์ง๊ณ ๊ฒฐ๊ตญ if switch ์ฐ๊ฒ๋จ. ๊ทผ๋ฐ ๊ทธ์๊ฐ ๊ฐ์ํจ์ override๊ฐ ๋ฌด์จ ์๋ฏธ๊ฐ ์๋?
๊ฑฐ๊ธฐ์ ์์ํด๋์ค๊ฐ ๋ถ๋ชจ ๊ทธ๊ฒ๋ ์กฐ์ ์๋ ์ฆ์กฐํ ์๋ฒ์ง ํด๋์ค์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์ญ๋ฅ๊ฐ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํจ.
์ฒ์๋ถํฐ ํตUnit์ ํต if Switch๋ก ๊ตฌํํ์ง ๊ทธ๋ฌ๋ฉด? ์ด๊ฑฐ ๋ณด๋ค ๋์๊ฒ ๋ญ๋?
์กฐ๊ฑด๋ฌธ ์์ฐ๋ ค๊ณ ๊ตฌ์กฐ ์ก๋๊ฑด๋ฐ;
๋ ๋งํ๋๋ก ํด๋น ํ๋ก์ ํธ์ ์ ๋ ํ๋ฆฌํน์ ๋จ 1๊ฐ๋ค.
์์ญ ์๋ฐฑ๊ฐ ํ๋ฆฌํน ์ผ์ผํ ์ด์ด์ ํ๋กํผํฐ ๋ฐ๊พธ๋๊ฑฐ๋ ๋ฐ์ดํฐ ํ ์ด๋ธ๋ง ๊ฑด๋๋ฆฌ๋๊ฑฐ๋ ๋น๊ตํด๋ณด์ ใ ใ .
SO๋ ์ฃฝ์ด๋ ์์ด๋ค ํ๋ ์ฌ๋๋ค๋ ์๋๋ฐ ๊ทธ๋ฐ๊ฑด ์์์ํ๊ณ
์ธ๋ฆฌ์ผ์์ ํ ์ด๋ธ&์คํธ๋ ํฐ์ง ํจํด์ ์ฐ๊ธฐ๊ฐ ์์ฒญ ์ฉ์ดํด์(์๋ฃํ ์์ฒด๋ฅผ ๋ด๋ ๋ณ์,TSubClass ๋ผ๋๊ฒ์ด ์กด์ฌ)
์ ๋ํฐ๋ก ๋๊ฐ์ ๋ฐฉ์ ๊ตฌํ ํ ๋ผํ๋ ์ธ์๋ฐ์ ์์์.
https://github.com/Heretic-byte/Strategy2
ํํ๋ก์ ํธ. ์คํ๋ผ์ดํธ๋ ์คํ๊ฒ์์ํธ ๋ฆฌ์์ค
๋ฏธ๋ฆฌ ์ถ์ฒ๋ฐ๊ณ ๋ด์ผ ์์นจ์ ํ์ธํด์ผ๊ฒ ๋น
๊ฐ์ฉ๋ค;
ํน์ ํ๋์ด ์ ๋ ์๊ธฐ ์์ ์๊ฒ ์ํฅ์ ์ฃผ๋ ํ๋์ด๋ผ๋ฉด ๋งค๊ฐ๋ณ์๋ก ์ ๋ ์๊ธฐ ์์ ๋ฃ์ด์ฃผ๋ฉด ๋๋๊ฑฐ์? ์๋๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๋
๋ฐฉ๋ฒ์ด์ผ ์ฌ๋ฌ๊ฐ์ง๊ฒ ์ง๋ง ์ผ๋จ ์ธํฐํ์ด์คํํ ๋งค๊ฐ๋ณ์๋ก ์ ๋์ฃผ๋๊ฑด ํ์์ง, ๋ด๊ฐ ๋นผ๋จน์๊ฑฐ๋ผ ๋ณด๋ฉด๋จ. ๋น์ฅ ์ ์์์ ๋ฌ์ฌ๋ฌด๋ธ๊ฐ ๊ณต๊ฒฉ๋ ฅ์ ์ถ๊ฐ๋ก ์ฃผ๋ ค๋ฉด ์๋ ์ ๋์ ๊ณต๊ฒฉ๋ ฅ์ ์์์ผํ๋๊น ใ ใ . ์ด์ ์ฌ๊ธฐ์ ์ธํฐํ์ด์ค์๊ฒ ์ด๊ธฐํํจ์๋ฅผ ๋ง๋ค์ด์ ์ฒ์์ ํ์ํ ๋ณ์๋ค์ ์บ์ฑ ์์ผ์ค๊ฑฐ๋ฉด ์ง๊ธ ๋ด๋ฐฉ์๋๋ก Instantiateํ๋๊ฒ ๋ง๊ณ ์ ๋ถ๋ค ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ค๊ฑฐ์ฌ์ SO์ธํฐํ์ด์ค๊ฐ ํ๋ฉํ๋๊ฒ ํ๋๋ ์๋ค๋ฉด instantiate์์ฐ๊ณ ์ฃผ์์ ์จ๋์ ๋ฐฉ์๋๋กํ๋๊ฒ ๋ง๊ณ
์ SO๋ก ์ ๋ ๊ฒ ํ๋ฒ์๋ฃ์ด๋ฒ๋ฆฌ๋๊ตฌ๋ ๊ฐ์ ๊ธฐํ๋ค ๋๋ ๊ธฐํ์๋์ด ๋ฐ๋ก ์ ๋ํฐ๋ฅผ ์๋ง์ ธ์ SOํ๋ํ๋ ๋ฐ๋ก๋ง๋ค์ด์ ๋ฆฌ์์คํด๋์๋ฃ๊ณ ๊ทธ๋๊ทธ๋ ๋ถ๋ฌ์์๋๋ฐ ์ด๊ฑฐ๋ณด๋๊น ์กด๋ด ๋ณ์ ๊ฐ์์ง ํ๋ค... ใณใณ
์ถ
์ ๋์์ฒด๋ SO๋ก ๋ง๋ค๊ณ ์ฐ๋ํธ์ด ๋ ํธํ์ง์๋์ฌ?
๊ทธ๊ฒ SOํ ์ด๋ธ 1๊ฐ์ ๊ตฌ์กฐ์ฒด๋ก ๋ชจ์๋๊ณ ์ฐ๋๊ฒ๋ณด๋ค ์ด๋์ธ๊ฒ ํ๊ฐ๋ ์์, ๊ฒฐ๊ตญ ์คํธ๋ ํธ์ง ์ธํฐํ์ด์ค SO + ์ ๋ SO ๋งํผ ์์ ๋ง ๋์ด๋๋ฒ๋ฆผ ํ์์ด์์ผ๋ก. SO 1๊ฐ ํ ์ด๋ธ ์ฐ๋ ์ ๋ SO ๋ค ๋ฐ๋ก๋ง๋ค๊ฑฐ๋ ์ด๊ฑฐ์์? ๊ฒฐ๊ตญ ์ ๋ SO๋ ์ด๋ค ์ปจํ ์ด๋์ ์ ์ฅ๋์ผํ๊ณ ๊ทธ์์ ์์ ๋จ์ ๋ง ์์ง ์ฅ์ ์ ํ๋๋ ์์ง
Item, ๋ชฌ์คํฐ ๋งค๋์ ๋ฌถ์ด์ CSV ์ ์ถ๋ ฅ์ผ๋ก ํด๋ด์ผ๊ฒ ๋ค - dc App
๊ณต๊ฒฉ๋ฐฉ์ ๊ฐ์๊ฑธ ์ ๋๋ง๋ค ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ๋๊ฑฐ, ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ์์ ํจ์๋ก ์ฒ๋ฆฌ ์๋๊ธธ๋ '์คํฌ๋ฆฝํธ' ์ค๋ธ์ ํธ๋ก ์ฐ๊ฒฐํด๋ค๊ฐ ๋ฆฌํ๋ ์ ์ผ๋ก ์ฒ๋ฆฌํ์๋๋ฐ, ์ด๊ฑฐ ๋ณด๋๊น ๊ทธ๋ฅ ์ธํฐํ์ด์ค๋ก ์ฒ๋ฆฌ๋๋ค...์ ๋ ๋ญํ๊ฑฐ๋ ใ ใ ใ ใ ใ ใ
๋๋ฐ์ด๋ค
์ ๋-์คํฌ-์ด๋ก์คํฌ-๋ ธ๋์กฑ์ฅ์คํฌ-๋นจ๊ฐ์กฑ์ฅ์คํฌ-์ด๋ก์กฑ์ฅ์คํฌ ในใ ์ด๊ฒ๋๋งค ๋ณต์กํ๊ฒ ๋ชป๋ง๋ค๊ณ ์์๋๋ฐ ใ ใ ใ ใ
์ด๋ก์กฑ์ฅ์คํฌ ์จ๋ฐ ใ ใ ใ ใ ใ ใ ใ ใ ใ
๊ฒ์ ํ๋กํ ํ์ ์์ค ๋ ํ๊ธฐ ์ฌ์ด ์ค์๋ฅผ ๋ฒํ๋๊ฒ ์๋๋ฐ์ง... ์ด์คํ ์ ๋ค๋ฆญ์ ๊ธฐํ์ ์ ์ฝ์ ์ฃผ๋ ๋ซ์ด ๋์ด ์ฐพ์์ค๊ฒ ๋์ด์์. ์ํ ๋จธ์ ์ ๊ธฐํ์ ์ก๋๊ฑฐ์ผ ์๋ ๋ถํฐ ์์ํ๊ณค ๋ฌด๊ดํ์. ์ธ์ ๋ ๋จ๋จํ ๊ตฌ์กฐ๋ณด๋ค ๋ง๋ํ ๊ตฌ์กฐ์ ์ปค์คํ ํ ๋ด์ฉ์ด ๋ค์ด๊ฐ "์ฌ์ง"๋ฅผ ๋ง๋ค์ด์ฃผ๋๊ฒ ์ข์... ์๋ก์ด ํ๊ฒฝ์ ํ์์๊ฒ "์๋ ค์ค์ผ"ํ๋ ๊ฒ ์์ฒด๊ฐ ๋ฆฌ์คํฌ๊ฐ ๋ ์ ์์... ํ์ ์ ๋ชป ๋ง๋๋ฉด ์ ๋ํฐ ํค์ง๋ ์์์ ๊ฒฐ๊ตญ ๋ณธ์ธ์ด ๋ง์ง๋๋ฐ "์ ใ ใ ์ด๋ด๊บผ๋ฉด ๊ฑ ์ฝ๋๋กํ์ง" ์ํฉ๋ ๋์ฎ...ใ