์‹ฌ์‹ฌํ•ด์„œ ์“ฐ๋Š” ์  ์ ํŠธํ›„๊ธฐ.


๊ฒฐ๋ก :ย  ์ดˆ๋ณด์ž๋ฉด ์“ฐ์ง€๋ง์ž




๋‚œ ์›๋ž˜ ๋ณธ์—…์ด ์ž๋™์ฐจ๋ถ€ํ’ˆ์—…์ฒด ํšŒ์‚ฌ์›์ด์•ผ.ย  ์ „๊ณต๋„ ๋ฌธ๊ณผ๊ณ ..ย  ย ย 

์ œ์กฐ์—…์ฒด์—์„œ ์ ˆ๋Œ€์ ์œผ๋กœ ์ง€์ผœ์•ผ๋ ๊ฒŒ ์žˆ๋Š”๋ฐย  ๋ฐ”๋กœ ํ’€ํ”„๋ฃจํ”„ย  ย ๊ฝ‰์ฐฌ๋‹ค๊ณ  full proof๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ”๋ณด๋„ ๋ฌธ์ œ์—†๊ฒŒย ๋งŒ๋“ค์–ด์•ผ ๋œ๋‹ค๊ณ  fool proof๋‹ค


์œ ๋‹ˆํ‹ฐ๋กœ ํ”Œ๋ฐ์„ย ์ฒ˜์Œ ๋ฐฐ์šฐ๊ณ  C#์œผ๋กœ ์–ธ์–ด๋ฅผ ์ฒ˜์Œ์ ‘ํ•œ ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ์–ด์ƒ‰ํ•œ๊ฑด

[Serialized]๋กœ ์˜์กด์„ฑ์„ ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋ž ์ฃผ์ž…ํ•˜๋Š”๊ฑฐ์˜€์–ด


์ด๊ฒƒ์ €๊ฒƒ ์ฃผ์ž…ํ•„์š”ํ•˜๊ฒŒ๋” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋“œ๋ž˜๊ทธ๋ฅผ ๊นœ๋ฐ•ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€๋œจ๋„ค?ย  ํด๋ž˜์Šค ์ด๋ฆ„ ๋ฐ”๊พธ๋ฉด ๋‹ค์‹œ ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋ž..ย ย 

์ด๊ฒŒ ๋ญ”๊ฐ€ ์‹ถ์—ˆ์ง€.ย  ย  ย  f/p๊ด€์ ์—์„œ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ์ž‘์—…์ž ์‹ค์ˆ˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„๋ณด์˜€์–ด ๋ง‰์—ฐํ•˜๊ฒŒ





์  ์ ํŠธ๋ฅผ ์“ฐ๋ฉด ์˜์กด์„ฑ์„ ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋ž ์—†์ด ์ฝ”๋“œ๋กœ ๋‹ค ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ?

์˜์กด์„ฑ์„ ํ”„๋กœ์ ํŠธ ๋‹จ์œ„๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ?ย  (find๋ถˆํ•„์š”)

๋ชจ๋…ธํ”ผํ—ค์ด๋น„์–ด/๊ฒŸ์ปดํฌ๋„ŒํŠธ๋ฅผย  ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ? ํ•˜๋Š” ์–˜๊ธฐ๋ฅผ ๋“ฃ๊ณ  ์  ์ ํŠธ์— ์ž…๋ฌธํ–ˆ๊ณ ย 


"์œ ๋‹ˆํ‹ฐ/C#" ๋ฌธ๋ฒ•๋„ ๊นŠ์€์ˆ˜์ค€์œผ๋กœ ํ•™์Šต์ด ์•ˆ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๊ฑธ ๋ฐฐ์šด๊ฑฐ์ง€ย 


๊ฒฐ๊ณผ์ ์œผ๋กœ ์˜๋„ํ–ˆ๋˜๋Œ€๋กœย  ์—ฐ์Šต์šฉ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ธด ํ–ˆ๊ณ  ๊ฝค ์ดํ•ดํ•˜๊ธด ํ–ˆ๋‹ค. ย ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด๊ฑธ ์“ฐ๋ฉด ์ ˆ๋Œ€ ์•ˆ๋œ๋‹ค๋Š” ๊ฒฐ๋ก ์ด ์ด์ œ ๋‚˜์™”๋Š”๋ฐ




1. ๋ณ„์— ๋ณ„ ์ธ์Šคํ†จ๋Ÿฌ๋“ค

ํ”„๋กœ์ ํŠธ ์ธ์Šคํ†จ๋Ÿฌ, ๊ฐ ์”ฌ๋งˆ๋‹ค ์ธ์Šคํ†จ๋Ÿฌ, ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์œ„ํ•œ ์ธ์Šคํ†จ๋Ÿฌ,ย  enemy๋ฅผ ์œ„ํ•œ ์ธ์Šคํ†จ๋Ÿฌ,ย  ๋ณ„์— ๋ณ„ ์ธ์Šคํ†จ๋Ÿฌ๊ฐ€ ๋“ฑ์žฅํ•œ๋‹ค.


์  ์ ํŠธ๊ฐ€ ๊ฒฐ๊ตญ ์˜์กด์„ฑ ๋ฐ›์•„์˜ค๊ธฐ์œ„ํ•ด ์“ฐ๋Š”๊ฑฐ๊ณ ย  ย ๋ฐ›์•„์˜ค๋ ค๋ฉด ๋ฏธ๋ฆฌย ์ค‘์•™์— ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ค˜์•ผ๋˜๋Š”๋ฐย 

๋ญ ํด๋ž˜์Šค ํ•˜๋‚˜ ๋งŒ๋“ค๋•Œ๋งˆ๋‹ค ์–ด๋””์— ๋ฌถ์–ด์•ผ๋ ์ง€ย  ์ฝ”๋“œ๋กœ ์ •์˜๋ฅผ ํ•ด์ค˜์•ผ๋จย  ย ์ด๊ฑฐ ์ž‘์„ฑ์ด ๋ณต์žกํ•˜๊ณ  ์˜ค๋ž˜๊ฑธ๋ฆผ



2. ๋ฌธ๋ฒ•

๊ทธ๋ƒฅ Bind์ธ์ง€ BindInterFaceAndSelfTo์ธ์ง€ย  BindInstance์ธ์ง€ย  WithArgument๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ•˜์—ฌ๊ฐ„ ์กด๋‚ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค.

๋ฌธ์ œ๋Š” ๊ทธ๋ƒฅ C#์ด๋‚˜ ์œ ๋‹ˆํ‹ฐ ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๋ผ ๊ฒ€์ƒ‰ํ•ด๋„ ๋”ฑ ๋งž๊ฒŒ ์•ˆ๋‚˜์˜ฌ๋•Œ๊ฐ€ ๋งŽ๊ณ  ๋งจ๋•…์— ํ—ค๋”ฉ์‹์œผ๋กœ ๋ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์ €๊ฒƒ ๋„ฃ์–ด๋ด์•ผ๋จ


์•ˆ๋˜๋Š” ์ƒํ™ฉ์—์„œ๋„ย  ์ด๊ฒŒ ๋ฐ”์ธ๋”ฉ์„ ์‹ค์ˆ˜ํ•œ๊ฑด์ง€, ๋ฐ›์•„์˜ค๋Š” ๊ฑธ ์‹ค์ˆ˜ํ•œ๊ฑด์ง€ย  ๋ฐ”๋กœ ์•Œ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๋ณด๋‹ˆย  ์กด๋‚˜ ์ง€์นœ๋‹ค ์ง„์งœ..



3. ๊ตฌ์กฐ์ดํ•ด

๊ฒŒ์ž„์„ ํ•˜๋‚˜ ๊ทธ๋ž˜๋„ ๊ทธ๋Ÿด๋“ฏํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ํž˜๋“ค์–ด์„œ ํ•œ๋‹ฌ ์‰ฌ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋งŒ์ง€๋Š”๋ฐ...

์œ ๋‹ˆํ‹ฐ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ํด๋ž˜์Šค๊ฐ€ ์•ˆ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋‹ˆย  ์–ด๋–ค ์˜ค๋ธŒ์ ํŠธ์— ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ๋ถ™๋Š”๊ฑด์ง€ ๊ตฌ์กฐํŒŒ์•…์ดย  ๋” ์–ด๋ ค์›€

๋‹น์—ฐํžˆ ์˜ค๋žœ๋งŒ์— ํ–ˆ์œผ๋‹ˆย  ์ฝ”๋“œ ๊ณ ์น˜๋ฉด ์  ์ ํŠธ๊ฐ€ ์˜ค๋ฅ˜๋ฑ‰๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ์•ˆ๋‚˜์˜ค๊ณ ...


์—๋””ํ„ฐ์—์„œ ํด๋ž˜์Šค๋ฅผ ๋“œ๋ž˜๊ทธ ํ•˜์ง€ ์•Š์•„์„œ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐย  ๋“œ๋ž˜๊ทธ๋ฅผ ์•ˆํ•ด๋†“์€๊ฑธ ์˜ค๋žœ๋งŒ์— ๋ณด๋‹ˆย  ํŒŒ์•…์ด ๋„ˆ๋ฌด์–ด๋ ค์›Œ ใ… 



4. ์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ ์‚ฌ์šฉ๊ด€๋ จ

๋ณดํ†ต ๋ชจ๋…ธ๋น„ํ—ค์ด๋น„์–ด ํด๋ž˜์Šค๋ฅผย  ์˜ค๋ธŒ์ ํŠธ์— ๋ถ™์—ฌ๋†“๊ณ ย  [Serialized] ์„ค์ •ํ•ด๋…ผ ํด๋ž˜์Šค์˜ ์ˆ˜์น˜๋ฅผ ์ธ์ŠคํŽ™ํ„ฐ์—์„œย  ์กฐ์ •ํ•ด์ฃผ๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ธ๋ฐ

์ด ์ขƒ๊ฐ™์€ ์  ์ ํŠธ๋Š” ์• ์ดˆ์— ๋ชจ๋…ธ๋น„ํ—ค์ด๋น„์–ด ํด๋ž˜์Šค๋ฅผ ๋ถ™์—ฌ์ฃผ๊ธฐ์œ„ํ•ด ๋‚˜์˜จ๊ฑฐ๋‹ˆย  ย  ์˜ค๋ธŒ์ ํŠธ์— ์•ˆ๋ถ™์–ด์žˆ์–ด์„œ ๊ทธ๋ ‡๊ฒŒ ์กฐ์ •์ด ์•ˆ๋ผย  ย  ย (์„ค๋ช…์ด ์–ด๋ ต๋„คใ… )


๊ฒฐ๊ตญ S/O๋ฅผ ์จ์•ผ๋˜๋Š”๋ฐ ์ด๊ฑฐ ์„ค์ •ํ•˜๋ ค๊ณ  ๋˜ ํด๋ž˜์Šค๊ฐ€ ๋‚˜์˜ค๊ณ  ์ด๋Ÿฐ์ €๋Ÿฐ ์ˆ˜์น˜๋“ค ํ•œ๋ฐ ๋ชจ์•„์„œย  ์„ค์ •ํ•˜๋Š”๋ฐ

์ด๊ฒŒ ์ž˜ ๋ณด์ด๊ฒŒ ์งœ๋†“์ง€ ์•Š์œผ๋ฉด ์–ด๋”ง๋Š”์ง€ ์ฐพ๋‹ค๊ฐ€ ๋˜ ์‹œ๊ฐ„๋ณด๋ƒ„..






C#/์œ ๋‹ˆํ‹ฐ๋ฅผ ์ž…๋ฌธํ•ด์„œ 6๊ฐœ์›”์„ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ–ˆ๊ณ  ๊ทธ ๋งˆ์ง€๋ง‰์—๋Š” ์  ์ ํŠธ๋ฅผ ๋ถˆํƒœ์› ๋Š”๋ฐย  ํ•œ๋‹ฌ ์‰ฌ๋‹ค๊ฐ€ ๋‹ค์‹œ๋ณด๋‹ˆ ๊ตฌ์กฐ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์–ด

๊ทธ๋ƒฅ ๊ฒŒ์ž„๊ฐœ๋ฐœ์„ ์ ‘๊ฒŒ๋์–ด.ย  ย  ย ๋ฌผ๋ก  ๋‚ด๊ฐ€ ๋นก๋Œ€๊ฐ€๋ฆฌ๋ผ ๊ทธ๋Ÿฐ๊ฑธ์ˆ˜๋„ ์žˆ๊ณ  ์ „์—…์ด ์•„๋‹ˆ๋ผ ๊ทธ๋Ÿฐ๊ฑธ์ˆ˜๋„ ์žˆ๊ฒ ์ง€ย  ย  (ํ‰๊ท  ํ•˜๋ฃจ์— 1~2์‹œ๊ฐ„์ •๋„๋ด„...)ย 


๊ทธ๋Ÿฌ๋‹ค๊ฐ€ 1๋…„์‰ฌ๊ณ  ๋Œ์•„์™”๊ณ  ๋‹ค์‹œ ๋‚ด๊ฐ€ ๋งŒ๋“ค์—ˆ๋˜๊ฑธ ๋ณด๋‹ˆ ํ•œ์ˆจ๋งŒ ๋‚˜์˜ดย  1๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋จ ใ…‹ใ…‹

์ฐจ๋ผ๋ฆฌ ์ €๊ฑฐ ๋ฐฐ์šธ ์‹œ๊ฐ„์— ์ฝ”๋ฃจํ‹ด ์ž์„ธํžˆ ๋œฏ์–ด๋ณด๊ณ  ๋‹ทํŠธ์œˆ๊ฐ™์€๊ฑฐ ๋ฐฐ์šฐ๊ณ ย  C# LINQ๊ฐ™์€๊ฑฐ ๋ฐฐ์šธ๊ป„ ํ•˜๋Š” ํ›„ํšŒ๊ฐ€ ๋งŽ๋‹ค.



์  ์ ํŠธ ๋ฐฐ์šธ๋•Œ ๋„ˆ๋ฌด ๊ฒ€์ƒ‰ํ•ด๋„ ๋‚˜์˜ค๋Š”๊ฒŒ ์—†์–ด์„œ ๊ฒฐ๊ตญ ์—ฌ๊ธฐ ์ธ๋””๊ฐค๊นŒ์ง€ ์™”์—ˆ๋Š”๋ฐย  ํ˜น์‹œ ๋ˆ„๊ตฐ๊ฐ€ ๊ฒ€์ƒ‰ํ–ˆ์„๋•Œ ์ฐธ๊ณ ํ•˜๊ณ  ๊ทธ๋ƒฅ ์•ˆ๋ฐฐ์šฐ๊ธธ ๋ฐ”๋ž˜!ย 

์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์ง€๋ง๊ณ  ๋Œ€์ถฉ Find๋กœ ์ฐพ์ž^^