๋ฉด.์ ‘ ์ค€๋น„ํ•˜๋‹ค๋ณด๋‹ˆ ๊ณผ๊ฑฐ์— ์ž‘์„ฑํ–ˆ๋˜ ์ ‘๊ทผ ์ œํ•œ์ž ๊ธ€์ด ๋– ์˜ฌ๋ž์–ด์š”.

๋ณธ์ธ๋„ ๋‰ด๋น„์ง€๋งŒ ํŒŒ์ธ๋งŒ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒธ, ๋” ๋‰ด๋น„์ผ๋•Œ ์ž˜ ์™€๋‹ฟ์ง€ ์•Š๋˜ ๊ฐœ๋…๋“ค์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ฐ”๋žŒ์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ–ˆ์–ด์š”.


AI ๋”ธ๊นํ•˜๋ฉด ์ •๋ณด ๋‚˜์˜ค๋Š”๊ฑฐ ์•„๋‹˜? ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฐฐ๊ฒฝ ์ง€์‹์ด ์žˆ์–ด์•ผ ๋”ธ๊น์ด ๊ฐ€๋Šฅํ•œ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ด์š”.

๊ฒŒ๋‹ค๊ฐ€ ๊ธ์ • ํŽธํ–ฅ, ํ™˜๊ฐ ๋“ฑ ๋‰ด๋น„ ์ž…์žฅ์—์„œ ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๋“ค์ด ์ธ๊ฐค์—์„œ๋„ ๋ฐœ๊ฒฌ๋˜๊ณ ์š”.

4


+์ƒ์†

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•์ธ ์ถ”์ƒํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ, ์บก์Аํ™” ์ค‘์—์„œ ๋จผ์ € ์ƒ์†์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•ด์š”.

๋‰ด๋น„ ์ž…์žฅ์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋งˆ์ฃผ์น˜๊ณ , ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๊ฑฐ๋“ ์š”.


โ“์ƒ์†์ด๋ž€?

์‚ฌ์‹ค ์œ ๋‹ˆํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ƒ์†๊ณผ ์ด๋ฏธ ํ•œ ๋ชธ์ด๋‚˜ ๋‹ค๋ฆ„์—†์–ด์š”.

cs ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ๋ฐ”๋กœ ์ƒ์†์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ž์‹ ์˜ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ MonoBehaviour ๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋“ ์š”.

1eb3d136a59a6bef20afd8b236ef203e76adc69d87013a


+๊ธฐ๋Šฅ

์ƒ์†์˜ ์žฅ์ ์ด๋ผ๊ณ  ๋“ฃ๋˜ '์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์˜ ์žฌ์‚ฌ์šฉ๊ณผ ํ™•์žฅ'์„ ์šฐ๋ฆฌ ๋ชจ๋‘ ์ด๋ฏธ ์‚ฌ์šฉํ•ด๋ดค์–ด์š”.

1eb3d136a59a6cef20afd8b236ef203e3b8ca3b3ca0833

MonoBehaviour ๋ฅผ ์ƒ์†๋ฐ›์•„ gameObject, transform ๋“ฑ์˜ ์†์„ฑ๊ณผ GetComponent ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”.
๊ฑฐ๊ธฐ์— ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” damage๋ผ๋Š” ์†์„ฑ๊ณผ Attack()์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์„œ ํ™•์žฅ์„ ํ–ˆ๊ณ ์š”.
10

์ฐธ๊ณ ์‚ฌํ•ญ
์‚ฌ์‹ค, Awake / Update / OnTriggerEnter ๋“ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋Š” ์ƒ์†๋ฐ›์€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ์—์š”.
์ƒ์†์œผ๋กœ ๋ฐ›์•˜๋”๋ผ๋ฉด, private void Awake()๊ฐ€ ์•„๋‹ˆ๋ผ protected override void Awake() ๋กœ ์‚ฌ์šฉํ–ˆ์„๊ฑฐ์˜ˆ์š”.
๊ทธ๋žฌ๋”๋ผ๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋•๋ถ„์— ๋‰ด๋น„๋“ค์ด ์ž์ฃผ ๊ฒช๋Š” ์˜คํƒ€ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•  ์ผ์ด ์—†์—ˆ์„ ๊ฑฐ์—์š”.
Awaek ๋กœ ์ž‘์„ฑํ•œ๋‹ค์Œ ์™œ ์‹คํ–‰์ด ์•ˆ๋˜์ง€ ๋‹นํ™ฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”.
33

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ฑด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฑธ๊นŒ์š”?
'์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Update ํ•จ์ˆ˜๋Š” ์ง€์›Œ๋ผ' ๋ผ๋Š” ๋ง ์ž์ฃผ ๋“ค์–ด๋ณด์…จ์„ ๊ฑฐ์˜ˆ์š”.
์œ ๋‹ˆํ‹ฐ ์—”์ง„์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜์Œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ '๋ฆฌํ”Œ๋ ‰์…˜' ์œผ๋กœ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ•œ ๋ฒˆ ํ™•์ธํ•˜๊ณ , ์žˆ๋Š” ๊ฒƒ๋“ค๋งŒ ๋ชฉ๋ก์œผ๋กœ ๋‹ด์•„๋‘ฌ์š”.
๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ชฉ๋ก์„ ๋งค ํ”„๋ ˆ์ž„ ํ˜ธ์ถœํ•˜๊ณ ์š”.
์ฆ‰, ๋นˆ Update ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‘๋ฉด ๋ชฉ๋ก์— ํฌํ•จ๋ผ์„œ ์•„๋ฌด ์ผ๋„ ์•ˆ ํ•˜๋ฉด์„œ ํ˜ธ์ถœ ๋น„์šฉ๋งŒ ๋‚˜๊ฐ€๋Š” ๊ฑฐ์˜ˆ์š”.

๊ทธ๋Ÿฐ๋ฐ ์™œ ์ด๊ฑธ ์ƒ์†์œผ๋กœ ์•ˆ ํ–ˆ์„๊นŒ์š”?
์ƒ์†์ด์—ˆ๋‹ค๋ฉด ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ถ€๋ชจ์˜ ๋นˆ Update()๋ฅผ ๊ฐ–๊ฒŒ ๋ผ์š”.
์—”์ง„์€ ์ด๋ฅผ ์ „๋ถ€ ํ˜ธ์ถœํ•˜๊ฒŒ๋˜๋ฏ€๋กœ ์œ„์—์„œ ๋งํ•œ ๋ฐฉ์‹๋ณด๋‹ค ์„ฑ๋Šฅ์ ์œผ๋กœ ์†ํ•ด๋ฅผ ๋ณด๊ฒŒ ๋ผ์š”.

์–ด์จŒ๋“  ๋‰ด๋น„๋Š” ๊ทธ๋ƒฅ ์ƒ์†์ด๋ž‘์€ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๊ตฌ๋‚˜ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ฉด ์ถฉ๋ถ„ํ•ด์š”.
13


โ›“+์ œ์•ฝ

'์ƒ์†์€ ์ •๋ง ์ข‹์€ ๊ฑฐ๊ตฐ์š”!' ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํฌ๋‚˜ํฐ ๋ฌธ์ œ๋ฅผ ๋‰ด๋น„๊ฐ€ ๊ฒช์„๋งŒํ•œ ์˜ˆ์‹œ๋กœ ์•Œ์•„๋ณด์•„์š”.

8


์šฐ๋ฆฌ๋Š” ์œ„์—์„œ ๊ตฌํ˜„ํ–ˆ๋˜ Weapon ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ Sword๋ผ๋Š” ๋ฌด๊ธฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ์–ด์š”.

1eb3d136a59a6def20afd8b236ef203e7a706ae4a8f4ab


์ž˜ ์ž‘๋™ํ–ˆ๊ณ , ์ดํ›„ ํŒจ๋ฆฌ์™€ ๋ฐฉ์–ด ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋ฌด๊ธฐ๊ฐ€ ํ•„์š”ํ•ด์ ธ์„œ ๊ตฌํ˜„ํ–ˆ์–ด์š”.

Parry ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง„ ParryableSword๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , Block ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง„ BlockableSword๋ฅผ ๊ตฌํ˜„ํ–ˆ์–ด์š”.


1eb3d136a59a6eef20afd8b236ef203e007804956f2fdc

์ด ๋˜ํ•œ ์ž˜ ์ž‘๋™ํ–ˆ์–ด์š”.


์‹œ๊ฐ„์ด ํ˜๋Ÿฌ ํŒจ๋ง๊ณผ ๋ธ”๋ก์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๊ฒ€์„ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ์–ด์š”.

1eb3d136a59a6fef20afd8b236ef203ecd1b6de48641bb

ParryableSword์™€ BlockableSword๋ฅผ ์ƒ์†๋ฐ›์œผ๋ ค๊ณ  ๋ณด๋‹ˆ, ์•„๋ฟ”์‹ธ!

C#์€ ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š์•„์š”.

C++์€ ๋˜๋Š”๋ฐ C++++๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ๋œ C#์€ ์–ด์งธ์„œ...?

์–ด์งธ์„œ C#์€ ํŽธ๋ถ€๋ชจ์ธ ๊ฑฐ์‹œ์•ผ...

11


์ถฉ๊ฒฉ์„ ๋ฐ›์€ ๋‰ด๋น„๋Š” ํ•˜๋Š” ์ˆ˜์—†์ด ParryableBlockableSword๋ฅผ Sword๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ–ˆ์–ด์š”.

1eb3d136a59a60ef20afd8b236ef203eef1e8bec13f960

(๋ฐฉํŒจ๋กœ ๋ง‰๋Š”๋‹ค๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฒ€์œผ๋กœ ๋ง‰๋Š”๋‹ค!)

์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๋ฉฐ ๋‰ด๋น„๋Š” ๊ธฐ๋ถ„์ด ์ข‹์•˜์ง€๋งŒ, ThrowableSword๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์–ด์กŒ์–ด์š”.

๊ทธ๋Ÿฐ๋ฐ ๋˜์ง€๋ฉด์„œ ํŒจ๋ง๋„ ๋˜๋Š” ๊ฒ€๋„ ๋งŒ๋“ค๊ณ , ๋ฐฉ์–ด๋˜๋ฉด์„œ ๋˜์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒ€๋„ ๋งŒ๋“ค๋ ค๊ณ  ๋ณด๋‹ˆ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์‚ฐ๋”๋ฏธ์ฒ˜๋Ÿผ ๋ถˆ์–ด๋‚ฌ์–ด์š”.

ํ•˜์ง€๋งŒ ๊ฐ•์ธํ•œ ์˜์ง€๋ฅผ ๊ฐ€์ง„ ๋‰ด๋น„๋Š” ๊ฒฐ๊ตญ ํ•ด๋‚ด๊ณ  ๋ง์•˜์–ด์š”.

์ดํ›„, ๊ฒ€ ์™ธ์— ์ด, ํ™œ๋„ Weapon์„ ์ƒ์†๋ฐ›์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ–ˆ์–ด์š”.

2


์‹œ๊ฐ„์ด ํ˜๋Ÿฌ ๊ธฐํš์ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ๋‚ด๊ตฌ๋„ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์กŒ์–ด์š”.

Weapon ํด๋ž˜์Šค์— durability ๋ณ€์ˆ˜์™€ ๊ฐ ๋ฌด๊ธฐ์— ๋”ฐ๋ผ ๋‚ด๊ตฌ๋„๋ฅผ ๊ฐ์†Œ์‹œํ‚ฌ, abstract ConsumeDurability์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์–ด์š”.

1eb3d136a59a61ef20afd8b236ef203e7c7cccdc58d410

์ผ๋ฐ˜ ๋ฌด๊ธฐ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ๊ณต๊ฒฉ ์‹œ์— durability๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋ฉด ๋˜์—ˆ์–ด์š”.


ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์š”์†Œ๊ฐ€ ์„ž์ธ ๋ฌด๊ธฐ๋“ค์—๊ฒŒ๋Š” ์—„์ฒญ๋‚œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด๋ฒ„๋ ธ์–ด์š”.

ParryableSword ๋Š” ๊ณต๊ฒฉ ์™ธ์— ํŒจ๋ง ์‹œ์—๋„, ParryableBlockableSword๋Š” ํŒจ๋ง๊ณผ ๋ฐฉ์–ด, ๊ณต๊ฒฉ ์‹œ์— ๊ตฌํ˜„์„ ํ•ด์•ผํ•˜๋Š” ๋“ฑ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์•„์กŒ์–ด์š”.

๊ฒŒ๋‹ค๊ฐ€ ThrowableSword ๋Š” ๋˜์ง„ ํŒŒ์›Œ์— ๋”ฐ๋ผ ๋‚ด๊ตฌ๋„๊ฐ€ ๊นŽ์—ฌ์•ผ ํ•˜๊ณ ์š”.

1eb3d136a59a69f627f1c6bb11f11a39bcf1e1271e9f19d4

์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์ €๊ธฐ ํŒŒํŽธํ™”๋˜๊ณ , ๋ชจ๋“  ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค๋“ค์„ ํŒ๋‹จํ•˜๋ฉฐ ๊ตฌํ˜„ํ•ด์ค˜์•ผํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์–ด์š”.

๊ฒŒ๋‹ค๊ฐ€ ConsumeDurability ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ, ํŒจ๋ง, ๋ธ”๋ก, ๋˜์ง€๊ธฐ๋Š” ๊ฐ์ž ์•Œ์•„์„œ ๋‚ด๊ตฌ๋„๋ฅผ ๊นŽ๊ณ  ์žˆ๊ณ ์š”.

๊ฒฐ๊ตญ ์–ด์ฐŒ์–ด์ฐŒ ๊ตฌํ˜„์€ ์„ฑ๊ณต์„ ํ–ˆ์–ด์š”.

36


+๊ธฐํš ๋ณ€๊ฒฝ

ConsumeDurability์— ๊ฐ•ํ™”๋„์— ๋”ฐ๋ผ ๋‚ด๊ตฌ๋„ ๊นŽ์ด๋Š” ๊ณ„์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜์—ˆ์–ด์š”.

1eb3d136a59a69f727f1c6bb11f11a399a25073180045f55

๊ทธ๋žฌ๋”๋‹ˆ ์ƒ์†๋ฐ›์€ ๊ตฌํ˜„์ฒด ๋ชจ๋‘๊ฐ€ ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋ฟœ์–ด๋ฒ„๋ฆฌ๊ณ  ๋ง์•˜์–ด์š”.

๋ถ€๋ชจ ํด๋ž˜์Šค ํ•˜๋‚˜๋ฅผ ๋ฐ”๊พธ์—ˆ๋”๋‹ˆ ์ˆ˜์‹ญ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์•„๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ๋ฒ„๋ฆฐ ๊ฑฐ์—์š”.

17


๋” ํฐ ๋ฌธ์ œ๋Š” ๋‚ด๊ตฌ๋„๊ฐ€ ์—†์–ด๋„ ์ ˆ๋ฐ˜์˜ ๋ฐ๋ฏธ์ง€๋ฅผ ์ฃผ๋Š” ๋ฌด๊ธฐ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ,

Weapon ํด๋ž˜์Šค์—์„œ ๊ทธ๊ฒƒ์„ ์žŠ๊ณ  ๋‚ด๊ตฌ๋„๊ฐ€ ์—†์„ ๋•Œ ๊ณต๊ฒฉ์„ ๋ชป ํ•˜๋„๋ก ๋งŒ๋“ค์–ด๋ฒ„๋ฆฐ๊ฑฐ์—์š”.

1eb3d136a59a69f427f1c6bb11f11a39fda56213056b003d

์ด๋ ‡๊ฒŒ ๋ผ๋ฒ„๋ฆฌ๋ฉด, ์ปดํŒŒ์ผ ์—๋Ÿฌ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋ฐ ๋ชจ๋“  ์ž์‹์˜ ๋™์ž‘์ด ๋ฐ”๋€Œ์–ด๋ฒ„๋ ค ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ์–ป๊ฒŒ ๋ผ์š”.

(์ด ๋ฌธ์ œ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, 'Fragile Base Class' ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š”.)


+์—ญ์‚ฌ

์• ์ดˆ์— C#์ด ๋‹ค์ค‘ ์ƒ์†๋งŒ ์ง€์›ํ–ˆ๋”๋ผ๋ฉด ์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ผ๋„ ์—†์—ˆ์„ํ…๋ฐ... ์–ด์งธ์„œ...?

8


์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ณผ๊ฑฐ์—์„œ๋ถ€ํ„ฐ ๊ฒช์–ด์™”์–ด์š”.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ก ์€ ์•„๋‹ˆ๋‹ˆ๊น ๊ฐ„๋‹จํ•œ ์—ญ์‚ฌ๋ถ€ํ„ฐ ์•Œ์•„๋ณด์•„์š”.


๋จผ ์˜›๋‚  ์ƒ์†์ด๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•˜๊ณ  C++์—์„œ ๋‹ค์ค‘ ์ƒ์†์ด ๋“ฑ์žฅํ–ˆ์–ด์š”.

'C#์ด ํ‡ด๋ณดํ–ˆ๊ตฌ๋‚˜...' ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค์ค‘ ์ƒ์†์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.


๋ฐฉ๊ธˆ ์ „ Weapon์˜ ์˜ˆ์‹œ์—์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด, Sword์˜ damage๋ฅผ ParryableSword, BlockableSword ๋ชจ๋‘ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์ด์—์š”.

๋‹ค์ค‘ ์ƒ์†์ด ๊ฐ€๋Šฅํ–ˆ๋”๋ผ๋ฉด, ์ด๋ฅผ ์ƒ์†๋ฐ›์€ ParryableBlockableSword๋Š” '๋ˆ„๊ตฌ์˜ damage๋ฅผ ๋ฌผ๋ ค๋ฐ›์•„์•ผ ํ•˜๋Š”๊ฐ€', 'Attack ํ•จ์ˆ˜๋Š” ๋ˆ„๊ตฌ์˜ ๊ฒƒ์„ ๋”ฐ๋ผ์•ผ ํ•˜๋Š”๊ฐ€' ๋“ฑ ๋ชจํ˜ธํ•จ์ด ๋ฐœ์ƒํ•ด๋ฒ„๋ ค์š”.

(์ž์„ธํ•œ ๊ฒƒ์€ '๋‹ค์ด์•„๋ชฌ๋“œ ๋ฌธ์ œ' ๋ฅผ ์•Œ์•„๋ณด์•„์š”.)


์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋กœ Java์—์„œ๋Š” ๋‹จ์ผ ์ƒ์†์„ ๊ฐ•์ œํ•˜๋˜, ๋‹ค์ค‘ ์ƒ์†์„ ์šฐํšŒํ•˜๋Š” interface๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ–ˆ์–ด์š”.

C#์€ Java์˜ ์„ค๊ณ„๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ฐœ์„ ํ•œ ๋ถ€๋ถ„๋“ค์ด ์กด์žฌํ•ด์š”.

(๊ทธ๊ฒƒ๊ณผ ํ•จ๊ป˜ interface๋Š” ๋‹ค์Œ ์‹œ๊ฐ„์— ์•Œ์•„๋ณด๋„๋ก ํ•ด์š”.)


์–ด์จŒ๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ๋‹ค์ค‘ ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋„ ์žˆ๊ณ  ์•„๋‹Œ ์–ธ์–ด๋„ ์กด์žฌํ•˜์ง€๋งŒ,

์ƒ์†์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ ๋ดค๋˜ ๊ทผ๋ณธ์ ์ธ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•ด์š”.

๋ถ€๋ชจ๋ฅผ ๊ณ ์น˜๋Š” ์ˆœ๊ฐ„ ์ž์‹ ์ „๋ถ€๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์Œ


๊ทธ๋ž˜์„œ ์ฐพ๊ฒŒ ๋œ ๋‹ค๋ฅธ ๊ธธ ์ค‘ ํ•˜๋‚˜๊ฐ€ Unity์˜ ํ•ต์‹ฌ์ธ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹(Composition)์ด์—์š”.

์šฐ๋ฆฌ๊ฐ€ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ์— Sprite Renderer, Rigidbody, Collider๋ฅผ ์„ ํƒ์ ์œผ๋กœ ๋ถ€์ฐฉํ•˜๋Š” ๋ฐฉ์‹์ด์š”.

MonoBehaviour๋ฅผ ํฌํ•จํ•œ ๊ฐ์ข… ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ชจ๋‘ Component๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„,

๋ถ€ํ’ˆ์„ ์กฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ์ƒ์†์˜ ํ•œ๊ณ„๋ฅผ ๋ŒํŒŒํ•˜๊ณ ์ž ํ–ˆ์–ด์š”.

(๋ฌผ๋ก  ์ด ๋ถ€ํ’ˆ๋“ค๋„ ์ƒ์†์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ ธ ์žˆ์–ด์š”. ์ƒ์†์„ ๋ฒ„๋ฆฐ ๊ฒŒ ์•„๋‹˜.)


์ดํ›„์—๋Š” ์‹ฌ์ง€์–ด Go๋‚˜ Rust์ฒ˜๋Ÿผ, ์•„์˜ˆ ์ƒ์† ์—†์ด ์„ค๊ณ„๋œ ์–ธ์–ด๋„ ๋“ฑ์žฅํ–ˆ๋‹ต๋‹ˆ๋‹ค.

25


+๊ฒฐ๋ก 

์šฐ๋ฆฌ๋Š” ์ƒ์†์˜ ํŠน์ง•๊ณผ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์–ด์š”.

ํ•˜์ง€๋งŒ ์ƒ์†์ด ๋‚˜์˜๊ธฐ๋งŒ ํ–ˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ์˜ MonoBehaviour๋„ ์—†์—ˆ๊ฒ ์ฃ ?

์ฆ‰, ์ ์ ˆํ•œ ์‚ฌ์šฉ์œผ๋กœ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ๊ณผ ํ™•์žฅ์ด๋ผ๋Š” ์žฅ์ ์„ ์ทจํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ๊ฑฐ์—์š”.


์ƒ์†์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ผญ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๊ธฐ์ค€์ด ์žˆ์–ด์š”.

"์ƒ์†์€ ํ•ญ์ƒ is-a๊ด€๊ณ„(B๋Š” A๋‹ค)์ผ ๋•Œ ์‚ฌ์šฉ"


์ง€๊ธˆ์˜ ๊ฒฝ์šฐ์—๋Š” Parry๋‚˜ Block์ด ๊ฒ€์˜ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹Œ ๊ฒ€์˜ ๋Šฅ๋ ฅ์ด์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ์š”.

๋‹ค๋งŒ, '๊ฒ€์€ ๋ฌด๊ธฐ์ด๋‹ค' ๋Š” ๋ฐ”๋กœ ์™€๋‹ฟ์ง€๋งŒ, 'ํŒจ๋ง ๊ฒ€์€ ๊ฒ€์ด๋‹ค' ์ด๋Ÿฌ๋ฉด ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•ด์š”.

๋…ผ๋ฆฌ์ ์œผ๋กœ ํŒจ๋ง ๊ฒ€์€ ๊ฒ€์ด ๋งž์œผ๋‹ˆ๊น์š”.

ํ•˜์ง€๋งŒ 'Parry'๋Š” ๊ฒ€์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด ์•„๋‹Œ ๊ฒ€์˜ ๋Šฅ๋ ฅ์ด๋ผ๋Š” ์ ์— ์ง‘์ค‘ํ•ด์•ผ ํ•ด์š”.

(์ด ํ—ท๊ฐˆ๋ฆผ์€ SOLID ์›์น™ ์ค‘ ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™์—์„œ๋„ ๋‹ค์‹œ ๋А๋‚„ ์ˆ˜ ์žˆ์–ด์š”.)

14


ํ•˜์ง€๋งŒ ๋‰ด๋น„ ์ž…์žฅ์—์„œ๋Š” ์ž˜ ์™€๋‹ฟ์ง€ ์•Š๋Š” ๋ง์ด๋ผ์„œ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•ด๋ณด์•„์š”.

"์•ž์œผ๋กœ ์ด ๋ฌด๊ธฐ(ํด๋ž˜์Šค)์˜ ๊ณ„์ธต์ด ๋” ๋Š˜์–ด๋‚ ๊นŒ?"

๋Š˜์–ด๋‚  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค๋ฉด ์ƒ์†์„ ํ”ผํ•˜๋Š” ๊ฒŒ ์ข‹์•„์š”.

๊ณ„์ธต์ด ๊นŠ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์ƒ์†์ด ์•„๋‹Œ ์กฐํ•ฉ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ผ๊ฑฐ์˜ˆ์š”.


๋ฌผ๋ก  ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์€ ๊ธฐํš ๋ณ€๊ฒฝ๋„ ์žฆ์•„์„œ ํ™•์‹ ํ•  ์ˆ˜ ์—†๊ณ , ๋ฆฌํŒฉํ† ๋ง๋„ ๋‹น์—ฐํ•œ๊ฑฐ๋‹ˆ๊น ๋„ˆ๋ฌด ๋‘๋ ค์›Œํ•  ํ•„์š”๋Š” ์—†์–ด์š”.

๋‹ค์Œ์—๋Š” ์œ„์—์„œ ์ด์•ผ๊ธฐํ–ˆ๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” interface์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š”.

์•ˆ๋ƒฅ


๋‚ด์šฉ๊ณผ ๊ด€๋ จ๋œ ๋‰ด๋น„๋ฅผ ํ–ฅํ•œ ์กฐ์–ธ ํ™˜์˜.

๊ทผ๋ฐ ์ด๋Ÿฐ ๊ธ€์ด ์ˆ˜์š”๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Œ.

์ข€ ๋” ์™€๋‹ฟ๊ฒŒ? ๋„“๊ฒŒ? ์•Œ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๋Š”๋ฐ ํ”ํ•œ ๋ธ”๋กœ๊ทธ ๋ณต๋ถ™๊ธ€ ๋А๋‚Œ์ธ๊ฐ€ ์‹ถ๊ธฐ๋„ ํ•˜๊ณ ...

๋งˆํฌ๋‹ค์šด์ด๋ž‘ ์ฝ”๋“œ๋ธ”๋ก๋„ ์—†์–ด์„œ ๋„˜๋ชจ ๋ถˆํŽธํ•˜๋‹ค๋ณด๋‹ˆ ๊ณ ๋ฏผ. ๊ทธ๋‚˜๋งˆ ์ด๋ฏธ์ง€ ๋“ฑ๋ก ํŽธํ•ด์ง€๊ณ  ai๋กœ ํ‡ด๊ณ  ํŽธํ•ด์ก‹์„œ!