์ŠคํŠธ๋ ˆํ‹ฐ์ง€ ํŒจํ„ด ๋ฐ˜์‘์ด ํ•ซํ•ด์„œ ์˜ˆ์ œ ๋งŒ๋“ค์–ด๋ด„.


์ฒด์ œ ์š”์•ฝ:


์œ ๋‹› ํ…Œ์ด๋ธ” - ์Šคํฌ๋ฆฝํŠธ์—์ด๋ธ” ์˜ค๋ธŒ์ ํŠธ,์ดํ•˜ SO

ํ–‰๋™ ์ธํ„ฐํŽ˜์ด์Šค - SO, ์œ ๋‹ˆํ‹ฐ ์ƒ์˜ ์œ ๋‹›ํ…Œ์ด๋ธ” ์•ˆ์— ํ–‰๋™ํ”„๋กœํผํ‹ฐ ๋ณ€๊ฒฝ ์šฉ์ด ์œ„ํ•ด์„œ.ํ•จ์ˆ˜์‚ฌ์šฉ์œ„ํ•œ I์ธํ„ฐํŽ˜์ด์Šค ๋‹ค์ค‘ ์ƒ์† ๋ฐ Abstract

GameManager - ์‹ฑ๊ธ€ํ„ด DataAssetManager ์ดˆ๊ธฐํ™” ๋ฐ ํ™€๋”ฉ

DataAssetManager - ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ KeyPair ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฌถ์–ด ์ด๋ฆ„๋งŒ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์ œ๊ณต.

Unit - ๋‹จํ•œ๊ฐœ๋งŒ ์กด์žฌํ•˜๋Š” Unit ํด๋ž˜์Šค,SetUnit(string className) ์œผ๋กœ ์ž‘๋™.


๋ฌผ๋ก  ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ,ํŠน์ˆ˜ํ•œ NPC,ํŒจํ„ด๋ณด์Šค๋ชน๋“ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  Unit์€ ์ƒ์†๋˜๊ณ  ํ™•์žฅ๋ ์ˆ˜ ์žˆ์Œ,,

๋‹จ์ˆœ ์žก๋ชน ๋”ฐ์œ„๋Š” ๋ชจ๋‘ 1๊ฐœ๋งŒ ์“ด๋‹ค๊ฐ€ ์ „์ œ.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8efa11d02831dd2ecabb386674d2cf3d2b24d3c46341d8b2e0a8a22ef6b3f2ac54d65a98c940851966012d15e19568489bc81c3064b671bd


SOAttackBase,SOMoveBase๊ฐ€ ์ƒ์†ํŒจํ„ด์—์„œ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ฐ€์ƒํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ ๋ฌถ์€ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• .


SO ์Šคํฌ๋ฆฝํŠธ์—์ด๋ธ” ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ตฌํ˜„ํ•œ ์ด์œ ๋Š” ์—ญ์‹œ SO๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์—์„œ ์œ ๋‹ˆํ‹ฐ ์—๋””ํ„ฐ์ƒ์˜ ํ”„๋กœํผํ‹ฐ ์กฐ์ž‘๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ.


SO~Base ๋“ค์€ ์ธํ„ฐํŽ˜์ด์Šค ๋‹ค์ค‘์ƒ์† ๋ฐ Abstract์ฒ˜๋ฆฌ ๋˜์–ด์žˆ์Œ.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8efa11d02831dd2ecabb386674d2cf3d2b24d3c46341d8b2e0a8a22ef6b3f2ac54d65a98c940851966012d15bace39489ecb1c6564b6a6c7


Unit์„ ๋งŒ๋“ค๋•Œ๋งˆ๋‹ค ๋ฐฐ์—ด ํฌ๋ฌธ ๋Œ๋ฆด์ˆ˜ ์—†์œผ๋‹ˆ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ๋กœ ๋”•์…”๋„ˆ๋ฆฌ ์„ธํŒ….


์ด ๋งค๋‹ˆ์ €๋Š” ๊ฒŒ์ž„๋งค๋‹ˆ์ €๊ฐ€ ์ œ์ผ ์ฒ˜์Œ์— ์ดˆ๊ธฐํ™”ํ•ด์ค˜์•ผํ•œ๋‹ค.


๊ทธ๋ƒฅ ExecutionOrder ์˜ฌ๋ ค๋ฒ„๋ฆฌ์…ˆ.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8efa11d02831dd2ecabb386674d2cf3d2b24d3c46341d8b2e0a8a22ef6b3f2ac54d65a98c940851966012d15e9c365429b994b3e64b6ecac


์œ ๋‹› ํด๋ž˜์Šค์˜ SetUnit,


SetUnit์„ AwakeStart์—์„œ ์•ˆ๋ถ€๋ฅด๊ณ  ์ง์ ‘ ๊ฐ์ฒด ์ƒ์„ฑํ›„ ๋ถˆ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค.


๋งต,์Šคํ…Œ์ด์ง€ ๋ฐ์ดํ„ฐ,UI์ž…๋ ฅ ๋“ฑ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ClassName๋งŒ ๋ฐ›์•„์˜ค๋ฉด ๋˜๋Š” ๊ฒƒ์ž„.


์ฃผ์„์—๋„ ์žˆ์ง€๋งŒ ๊ฒŒ์ž„์— ๋”ฐ๋ผ ์ธํ„ฐํŽ˜์ด์Šค ๋“ค์—๊ฒŒ ๋งŽ์Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๊ฒŒ๋จ.


์•„์˜ˆ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์กด๋‚˜์š”์•ฝํ• ์ˆ˜ ์žˆ์œผ๋ฉด SO๋ฅผ ์ถ”๊ฐ€ ๋™์ ํ• ๋‹น์•ˆํ•˜๊ณ  ๋ชจ๋“  ์œ ๋‹›์ด ๊ณตํ†ต๋œ SO 1๊ฐœ๋งŒ ์“ฐ๊ฒŒ ํ• ์ˆ˜ ์žˆ์Œ.


์—ฌ๋‹ด์œผ๋กœ ํ–‰๋™ ์ธํ„ฐํŽ˜์ด์Šค๋“ค ํ•œํ…Œ DeltaTime ๋„˜๊ฒจ์ฃผ๋ฉด FSM๋งŒ๋“ค๊ธฐ ๊ฐœ๊ฟ€๋จ.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8efa11d02831dd2ecabb386674d2cf3d2b24d3c46341d8b2e0a8a22ef6b3b6fb07d33d9bcc44ad7c80078315dd2d1d769f44c5


ScriptableObject ๋ฉ”๋‰ด์‚ฌ์šฉ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ ์žˆ์„๊นŒ๋ด



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8efa11d02831dd2ecabb386674d2cf3d2b24d3c46341d8b2e0a8a22ef6b3f2ac54bb3699ca467b84367f37d672b45e4a86dfdf360a81a6


์œ ๋‹›ํ…Œ์ด๋ธ” ์‚ฌ์šฉ,ClassName์€ ๋ชฉ์ˆจ๊ฑธ๊ณ  ์ง€์ผœ์ค˜์•ผํ•˜๋Š” ๋ณ€์ˆ˜,ํ–ฅํ›„ ์œ ๋‹›ํ”„๋ฆฌํŒน ํ”„๋กœํผํ‹ฐ์— ๋ฐ•์•„์ค„๋•Œ, SetUnitํ• ๋•Œ ์ŠคํŽ ๋ง์ด๋ž‘ 100% ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค.


์ด๊ฒŒ ์ œ์•ฝ์ž„. ํ•˜์ง€๋งŒ ๋‹ค์ด๋ ‡๊ฒŒ ํ•จ. ์—ด๊ฑฐํ˜•์œผ๋กœ ํ…Œ์ด๋ธ” ์บ๋ฆญํ„ฐ๋ฅผ ๋ถ€๋ฅด๊ฒŒ๋˜๋ฉด ๋ฐฐ์—ด์ด๋ž‘ 1๋Œ€1 ๋งค์นญ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์žฌ๋ฏธ๊ฐ€ ์†”์†”ํ•˜๊ฒ ์ง€๋งŒ


enum์„ ์ถ”๊ฐ€ํ• ๋•Œ ๋น„์ฅฌ์–ผ์ŠคํŠœ๋””์˜ค๋ฅผ ์—ด์–ด์•ผํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ฐ์ดํ„ฐํ…Œ์ด๋ธ” ์‚ฌ์šฉ์˜ ์˜๋ฏธ๊ฐ€ ๋ฌด์ƒ‰ํ•ด์ง.


๊ทธ๋ž˜์„œ ์˜คํƒ€๊ฐ€ ๋‚ ์ˆ˜์žˆ์–ด๋„ string์œผ๋กœ ์•ฝ์†๋งŒ๋“ค๊ณ  ํ‹€๋ฆฐ(๊ธฐํš์ž)์ƒˆ๋ผ๊ฐ€ ์ž˜๋ชปํ•œ ์ฒด์ œ๋กœ ๊ฐ€๋Š”๊ฑฐ.




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced8efa11d02831dd2ecabb386674d2cf3d2b24d3c46341d8b2e0a8a22ef6b3b6fb07d33d9bcc44ad798a56d847d77d1f769f44c5


์œ ๋‹› ํ…Œ์ด๋ธ”์— ๋น„ํ—ค์ด๋น„์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ž‘ ์ฝ˜์†” ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ


์ฐฝ๋ณ‘๊ณผ ๊ธฐ์‚ฌ๋Š” Move๋งŒ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.


๋งŒ์ผ ์ด๊ฑธ ์ „๋ถ€ Unit ์ž์ฒด์˜ ์ƒ์†,๊ฐ€์ƒํ•จ์ˆ˜ ์˜ค๋ฒ„๋ผ์ด๋“œ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด?


Attack*Move์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋งŒํผ ๋งŒ๋“ค์–ด์•ผ Attack๊ณผ Move๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์œ ๋‹›๋“ค์„ ๋งŒ๋“ค์ˆ˜์žˆ์Œ


๊ทผ๋ฐ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”๊ณผ ์ŠคํŠธ๋ ˆํ‹ฐ์ง€ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด


์†๊ฐ€๋ฝ ๊นŒ๋”ฑ์œผ๋กœ, ๊ทธ๊ฒƒ๋„ ๊ธฐํš์ž๊ฐ€ ๊นŒ๋”ฑ๊นŒ๋”ฑ ํ•˜๋Š”๊ฑธ๋กœ ์กฐ๋ฆฝ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—


์ด๋Ÿฐ ๊ฒฝ์šฐ์˜์ˆ˜๋ฅผ ์ „๋ถ€ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†์Œ.


์• ์ดˆ์— ์œ ๋‹›์ƒ์† ํŒจํ„ด์€ ๋Š™์€ ๊ต์ˆ˜๋“ค์ด ๋ชจ๋ฅด๊ณ  ๊ตฌ์„ธ๋Œ€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€๋ฅด์น˜๋Š”๊ฑฐ



์œ ๋‹›-์˜คํฌ-์ดˆ๋ก์˜คํฌ-๋…ธ๋ž‘์กฑ์žฅ์˜คํฌ-๋นจ๊ฐ„์กฑ์žฅ์˜คํฌ-์ดˆ๋ก์กฑ์žฅ์˜คํฌ


์ด๋”ด์‹์œผ๋กœ ๊ตฌํ˜„๊ณ„์†ํ•ด๋ด๋ผ ๋ญ”๊ฐ€ ์กท๋๋‹ค๋Š”๊ฒŒ ์•ˆ๋А๊ปด์ง€๋ƒ?


๊ฒฐ๊ตญ ํ”„๋กœํผํ‹ฐ๋งŒ(์ƒ‰๊น” ๋“ฑ) ๋‹ค๋ฅธ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌํ• ๊ฒƒ์ด๊ณ  ์—ฌ๊ธฐ์„œ ์ƒ์†์œผ๋กœ ๋นผ๋‹ค๋ณด๋ฉด


"์•„ ๋ญ”๊ฐ€ ๋น„ํšจ์œจ์ ์ธ๋ฐ"


์‹ถ์–ด์ง€๊ณ  ๊ฒฐ๊ตญ if switch ์“ฐ๊ฒŒ๋จ. ๊ทผ๋ฐ ๊ทธ์ˆœ๊ฐ„ ๊ฐ€์ƒํ•จ์ˆ˜ override๊ฐ€ ๋ฌด์Šจ ์˜๋ฏธ๊ฐ€ ์žˆ๋ƒ?


๊ฑฐ๊ธฐ์— ์ž์‹ํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ ๊ทธ๊ฒƒ๋„ ์กฐ์„ ์‹œ๋Œ€ ์ฆ์กฐํ• ์•„๋ฒ„์ง€ ํด๋ž˜์Šค์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์—ญ๋ฅ˜๊ฐ€ ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•จ.


์ฒ˜์Œ๋ถ€ํ„ฐ ํ†ตUnit์— ํ†ต if Switch๋กœ ๊ตฌํ˜„ํ•˜์ง€ ๊ทธ๋Ÿฌ๋ฉด? ์ด๊ฑฐ ๋ณด๋‹ค ๋‚˜์€๊ฒŒ ๋ญ๋ƒ?


์กฐ๊ฑด๋ฌธ ์•ˆ์“ฐ๋ ค๊ณ  ๊ตฌ์กฐ ์žก๋Š”๊ฑด๋ฐ;



๋˜ ๋งํ•œ๋Œ€๋กœ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ์œ ๋‹› ํ”„๋ฆฌํŒน์€ ๋‹จ 1๊ฐœ๋‹ค.


์ˆ˜์‹ญ ์ˆ˜๋ฐฑ๊ฐœ ํ”„๋ฆฌํŒน ์ผ์ผํžˆ ์—ด์–ด์„œ ํ”„๋กœํผํ‹ฐ ๋ฐ”๊พธ๋Š”๊ฑฐ๋ž‘ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”๋งŒ ๊ฑด๋“œ๋ฆฌ๋Š”๊ฑฐ๋ž‘ ๋น„๊ตํ•ด๋ณด์…ˆ ใ…‡ใ…‡.



SO๋Š” ์ฃฝ์–ด๋„ ์•ˆ์“ด๋‹ค ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿฐ๊ฑด ์•Œ์•„์„œํ•˜๊ณ 


์–ธ๋ฆฌ์–ผ์—์„  ํ…Œ์ด๋ธ”&์ŠคํŠธ๋ ˆํ‹ฐ์ง€ ํŒจํ„ด์„ ์“ฐ๊ธฐ๊ฐ€ ์—„์ฒญ ์šฉ์ดํ•ด์„œ(์ž๋ฃŒํ˜• ์ž์ฒด๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜,TSubClass ๋ผ๋Š”๊ฒƒ์ด ์กด์žฌ)


์œ ๋‹ˆํ‹ฐ๋กœ ๋˜‘๊ฐ™์€ ๋ฐฉ์‹ ๊ตฌํ˜„ ํ• ๋ผํ•˜๋‹ˆ ์“ธ์ˆ˜๋ฐ–์— ์—†์—ˆ์Œ.



https://github.com/Heretic-byte/Strategy2


ํ’€ํ”„๋กœ์ ํŠธ. ์Šคํ”„๋ผ์ดํŠธ๋Š” ์˜คํ”ˆ๊ฒŒ์ž„์•„ํŠธ ๋ฆฌ์†Œ์Šค