1. ๊ทธ๋ž˜ํ”ฝ ์•„์›ƒํ’‹ ๋งค๋‹ˆ์ €


์šฐ์„  ๋ฉค๋ฒ„๋ฅผ ๋ด…์‹œ๋‹ค.

root๋Š” ์”ฌ์˜ ๋ฃจํŠธ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ์ž…๋‹ˆ๋‹ค. ํ•˜์ด์–ด๋ผํ‚ค(๊ณ„์ธต)์ฐฝ์„ ๋”๋Ÿฝํžˆ์ง€ ์•Š๊ธฐ์œ„ํ•ด์„œ

์”ฌ์˜ ์ตœ์ƒ์œ„ ์˜ค๋ธŒ์ ํŠธ์— ๋ฐ•์•„๋„ฃ๊ธฐ๋กœ ํ–ˆ์ฃ ? ๋ฉค๋ฒ„๋กœ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.


string[] forDraw = new string[]{ "๋ฐ”๋‹ฅ", "๋ฒฝํ˜น์€๊ฑฐ๋ฏธ์ค„",ย "์•„์ดํ…œ", "๋ชฌ์Šคํ„ฐ" };


for( string --- : forDraw ){

---Pool์€ ---๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋ง‰์ƒ ๊ทธ๋ ค์งˆ ์‹œ์ ์— ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—

์•„์›ƒํ’‹ ๋งค๋‹ˆ์ €๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ์‹œ์ ์— ๋ฏธ๋ฆฌ ---ํƒ€์ž…์˜ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๋น„ํ™œ์„ฑํ™” ํ•ด๋†“์•˜๋‹ค๊ฐ€.

๊ทธ๋ ค์งˆ๋•Œ๋งŒ ๊บผ๋‚ด์จ์•ผํ•ฉ๋‹ˆ๋‹ค ( ๋ฏธ๋ฆฌ๋งŒ๋“ค์–ด๋†“์€ ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š”๊ฑธ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ ํ’€์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค )

์ด ์˜ค๋ธŒ์ ํŠธํ’€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”๋œ ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๊ณ„์ธต์ฐฝ์„ ๋”๋Ÿฝํžˆ์ง€ ์•Š๊ฒŒ ๋ถ€๋ชจ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ

์ด ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๊ฐ€ ---Pool ( ex] floorPool ) ์ž…๋‹ˆ๋‹ค


Active---Pool์€ ์ด ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ ํ’€์—์„œ ๊บผ๋‚ด์„œ ---๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ ์‚ฌ์šฉํ•œย ( ex) "๋ฐ”๋‹ฅ"์„ ๊ทธ๋ฆฌ๋Š”๋ฐ ์‚ฌ์šฉํ•œ )

ํ™œ์„ฑํ™”๋œ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ๋ถ€๋ชจ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ์ž…๋‹ˆ๋‹ค.


}


JustGameObjectPool์€ ์‚ฌ์‹ค ์˜ค๋ธŒ์ ํŠธํ’€์€ ๋‹ค์–‘ํ•œ ํƒ€์ž… string, Unit, GameObject๋“ฑ, ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ

๋”ฑ ์œ ๋‹ˆํ‹ฐ์—”์ง„์˜ GameObject์— ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋งŒ๋“  ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.


์˜ˆ์ „์— ์œ ๋™๋‹‰์œผ๋กœ ์“ด.. ๋‚จ์˜ ๋ธ”๋กœ๊ทธ ์†Œ์Šค ์ˆ˜์ •ํ•œ ๊ฐ•์ขŒ


๋ฐ”๋‹ฅ ๊ทธ๋ฆฌ๋Š”๋ฐ ๋ ‰์ด ๊ฑธ๋ ค? 1,2๊ฐ•


๋ฅผ ๋ณด๊ณ  ์˜ค์‹œ๋ฉด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ํ”Œ๋ ˆ์ด์–ด ์œ ๋‹›์€ 1๊ฐœ์ด๋ฏ€๋กœ ํ’€ ์—†์ด

playerObj๋ผ๋Š” ๋†ˆ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b24310d1a82ec2455f374b3b



์ด๋ฆ„์ง€์ • ๋ถ€๋ชจ์ง€์ • ํ•˜๋Š” ๋ถ€๋ถ„..



viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b71ec3fc50445b91e5f472ca


์‹ค์ œ JustGameObjectPool ์ƒ์„ฑ์ž ๋ถ€๋ถ„์„ ๋ณด๋ฉด

์ƒˆ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์Šคํ”„๋ผ์ดํŠธ ๋ Œ๋”๋Ÿฌ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. ( ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋Š” ๋†ˆ์ด์š” )

๋งต์ด 100, 100์‚ฌ์ด์ฆˆ๋ณด๋‹ค ์ข€ ์ž‘์€ ๊ฒƒ์„ ๋„ฃ์—ˆ๊ณ  ๊ฑฐ์˜ ๋ฐ”๋‹ฅ์ด ๋ฐ˜์ด ์•ˆ์ฐจ๋ฏ€๋กœ ๋„‰๋„‰ํžˆ

๋ฐ”๋‹ฅ 5000๊ฐœ, ๋ฒฝ 5000๊ฐœ ๋„ฃ์—ˆ์–ด์š”


์•„์ดํ…œํ•˜๊ณ  ๋ชฌ์Šคํ„ฐ๋Š” ์ ์œผ๋‹ˆ 200๊ฐœ์”ฉ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘ก๋‹ˆ๋‹ค.


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b41ebd59187be74b839bcd99


์œ„์˜ ์œ„์— ๊ทธ๋ฆผ์„ ๋ณด๋ฉด SpriteSheet๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฑด ์•ˆ๋‚˜์˜ฌ๊ฒ๋‹ˆ๋‹ค.

๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ์Šคํ”„๋ผ์ดํŠธ ๋ฆฌ์†Œ์Šค์™€ ์ด๋ฆ„์„ ๋งคํ•‘ํ•ด๋†“๋Š” ๋…€์„์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋กœ๋”ฉ์‹œ๊ฐ„์„ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๊ฒŒ์ž„ ์‹œ์ž‘ํ• ๋•Œ ๋ฏธ๋ฆฌ ํ˜ธ์ถœํ•˜๋ฉด ์ข‹์„ ๋…€์„์ด์ฃ 


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b51e2ca3c42b7ce3421f3a5a

์™œ ์“ฐ๋Š”๊ฐ€ ํ•˜๋ฉด.. Resource.LoadAll<Sprite>์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ดํ˜•ํƒœ๋กœ๋งŒ ์ถœ๋ ฅ๋˜์ง€ ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šคํ”„๋ผ์ดํŠธ๋Š” 1๋ฒˆ ๋กœ๋”ฉํ•ด์„œ ์žฌ์‚ฌ์šฉ ํ•˜๋ฉด ๋˜์ง€ ๋งค๋ฒˆ Resource.Load ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์จ์„œ ๋””์Šคํฌ์•ก์„ธ์Šค(์•„๋งˆ๋„..)

๋ฅผย ํ•˜๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋‹ˆ๊นŒ์š”.


์—ฌํ•˜ํŠผ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด ๊ทธ๋ž˜ํ”ฝ์•„์›ƒํ’‹๋งค๋‹ˆ์ €์˜ ๋ฉค๋ฒ„/์ƒ์„ฑ๋ถ€๋ถ„ ์„ค๋ช…์€ ๋๋‚ฌ๊ตฌ์š”


1-1. drawFloor ํ•จ์ˆ˜

Map์— width, height๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ getWidth, getHeight๋กœ ๋งŒ๋“ค๊ณ 

int 2์ฐจ์› ๋ฐฐ์—ด floor๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” getFloor()๋„ ย ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ floor[x,y]๊ฐ€ 1์ด๋ฉด

ย => ๋ฐ”๋‹ฅ์ด ์žˆ์œผ๋ฉด

ย ๋ฒฝ๊ทธ๋ฆผ์ด ์Šคํ”„๋ผ์ดํŠธ ๋ Œํ„ฐ๋Ÿฌ์˜ ์Šคํ”„๋ผ์ดํŠธ๋กœ ์ง€์ •๋œ๋…€์„๋“ค์ธ..

ย  floors(๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธํ’€)์—์„œ ํ•œ๋†ˆ ๊ฐ€์ ธ์™€์„œ x,y์œ„์น˜์— ๋†“๊ณ  ( z๊ฐ’์ด 0์ธ ์ด์œ ๋Š” ๊ฐ€์žฅ ์•„๋žซ์ชฝ์— ๊ทธ๋ ค์ ธ์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ )

ย SetActive๋กœ ํ™œ์„ฑํ™”ํ•œ๋‹ค. ( ๊ทธ๋ž˜์•ผ ๊ทธ๋ฆผ์ด ๋ณด์ธ๋‹ค )



viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b54a96d313d492626eb27788

drawWallAndWeb์€ ๊ฐ™์€ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ค๋ช… ์ƒ๋žต ( z๊ฐ’ -1๋กœ ๋ฐ”๋‹ฅ๋ณด๋‹ค ์œ„์— ๊ทธ๋ ค์ง€๊ฒŒ ํ•จ )


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21bb1e4b168392df270035941e


drawItem์˜ ๊ฒฝ์šฐ ๋น„์Šทํ•œ ๋ฐฉ์‹์ด์ง€๋งŒ,

case๋ฌธ์œผ๋กœ ์•„์ดํ…œ ๊ทธ๋ฆผ์„ ๋‹ค๋ฅด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ( z๊ฐ’ -2๋กœ ๋ฐ”๋‹ฅ/๋ฒฝํ˜น์€๊ฑฐ๋ฏธ์ค„ ๋ณด๋‹ค ์œ„์— ๊ทธ๋ ค์ง€๊ฒŒํ•จย )

( TODO : ๋งŒ์•ฝ ๋ฒฝ์„ ๋ถ€์ˆ˜๋ฉด ์•„์ดํ…œ์ด ๋‚˜์˜ค๊ฒŒํ•˜๋ ค๋ฉด... -0.5๋กœ ํ•ด์•ผ๋ ๊ฑฐ ๊ฐ™๊ธด ํ•œ๋ฐ...

ย ๊ฑฐ๋ฏธ์ค„์„ ๊ฑท์–ด๋‚ด๋ฉด ( ํ”ฝ์…€๋˜์ „์˜ ํ’€์ˆฒ ๊ฑด๋“œ๋ฆฌ๋ฉด ๋‚˜์˜ค๋Š” ์ด์Šฌ ๋‚˜์˜ค๋“ฏ์ด ) ํ…œ์ด ๋‚˜์˜ค๊ฒŒ ํ•˜๋ ค๊ณ  ํ•ด๋„ ๊ทธ๋ ‡๊ณ ..

ย ์ด๊ฑด ๋‚˜์ค‘์— ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค ! )


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b11ffcfdeca6d3f13c5ef5ad

drawMonster์˜ ๊ฒฝ์šฐ

drawItem ์ฒ˜๋Ÿผ case๋ฌธ์„ ์“ฐ์ง€๋งŒ

๋ชฌ์Šคํ„ฐ๋ณ„ ์ด๋ฆ„์„ ๊ฐ’์— ๋”ฐ๋ผ ์žฌ์ง€์ • ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ

case๋ฌธ์—์„œ ์žฌ์ง€์ • ํ•ด์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๋ชฌ์Šคํ„ฐ ์บ๋ฆญํ„ฐ๋งˆ๋‹ค ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ

๊ทธ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š”๊ฒŒ ์ข‹์„๊ฒƒ ๊ฐ™์•˜์–ด์š”.

๊ทผ๋ฐ ๊ทธ ๊ฐ’์ด ๋งŒ์•ฝ์— ์ดํ›„์— ๋‹ค๊ตญ์–ด ์ง€์›์„ ํ•œ๋‹ค๋ฉด

ํ‚ค๋กœ ์“ฐ์ผ๊ฒƒ ๊ฐ™์€๋ฐ, ๋ฌธ์ž์—ด๋กœ ํ•ด๋†“์œผ๋ฉด ์ถ”ํ›„ ์ด๊ฒŒ ํ‚ค๊ฐ’์œผ๋กœ ์“ฐ์ด๋Š” ๊ฑด์ง€ ์•„๋‹ˆ๋ฉด

์˜์–ด ์ถœ๋ ฅ์šฉ ๋ฌธ์ž์—ด์ธ์ง€ ํ—ท๊ฐˆ๋ฆด๊ฒƒ ๊ฐ™์•„์„œ

( key-value์Œ.ย 

ย ์˜-ํ•œ ๋ฒˆ์—ญํŒŒ์ผย { key: "Rat", value: "์ฅ" } )

MonsterName์ด๋ผ๋Š” enum์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b14fc22be17b4484401531a6

enum์€ ToStringํ•จ์ˆ˜๋กœ ์ถœ๋ ฅํ• ๊ฒฝ์šฐ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค "ERROR", "Rat"์ด๋Ÿฐ์‹์œผ๋กœ์š”

์ธํŠธํ˜•์œผ๋กœ ์บ์ŠคํŒ…ํ•˜๋ฉด 0, 1,2,3,4,5,6 ์ด๋ ‡๊ฒŒ ์ถœ๋ ฅ๋˜๊ตฌ์š”.



viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21e218cb1000cd5b2b3937c620


Characterํด๋ž˜์Šค์— name์ด๋ผ๋Š” ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ 

getName()ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋ชฌ์Šคํ„ฐ ์ด๋ฆ„์ถœ๋ ฅ

ToStringํ•จ์ˆ˜๋Š” MonsterName enum์ž์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž๋„ MonsterName์„ ๋„ฃ์–ด์•ผ ๋˜๊ฒŒ ์ˆ˜์ •์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด

์ด์ „์— DogCharacter๊ฐ™์ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“์€ ์ž์‹ํด๋ž˜์Šค๋“ค์ด ์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•˜๋Š”๋ฐ

--------------------------------------------------------

public class DogCharacter : Character {

public DogCharacter() : base(new Dog(), new Dog(), MonsterName.Dog){

}

}

์™€ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ 5์ข…๋ฅ˜ ๋‹ค๋ฅธ ์บ๋ฆญํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ( ๊ทธ๋ฆผ์ด 10๊ฐœ๋ฐ–์— ์•ˆ๋˜์„œ.. )


viewimage.php?id=2abcdd23dad63db0&no=29bcc427b28377a16fb3dab004c86b6f2ced7c20b23a219d4b53db25fb9af42fc89c43f5cc993a83f03cd0a68b21b419ad646df0ac9c2b534245

์‚ฌ์‹ค sprite.getSprite๋„ mons[i].ToString()์„ ์ด์šฉํ–ˆ์œผ๋ฉด case๋ฌธ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ํ–ˆ์„ํ…๋ฐ..

ํด๋ž˜์Šค๋ช…๊ณผ ํ•ด๋‹น ์บ๋ฆญํ„ฐ๋ช…์„ Dog, DogCharacter๋กœ ํ•ด๋†“๊ณ  ์Šคํ”„๋ผ์ดํŠธ์‹œํŠธ์—์„œ๋Š” Hound๋ผ๊ณ  ์ด๋ฆ„์„ ์ ๋Š”๋ฐ”๋žŒ์—...

์‚ฝ์งˆ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


์—ฌ๊ธฐ๊นŒ์ง€ํ•˜๋ฉด ๊ทธ๋ฆผ์ด ์ž˜ ๋œน๋‹ˆ๋‹ค.