C# ์ „ํ–ฅ

์•ˆ๋…•ํ•˜์„ธ์š” ์ž๋ฐ” ์‹ ์ž… ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.
์ „๊ณต์ด ์ปดํ“จํ„ฐ๊ณตํ•™์ด๋ผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ž๋ฐ” ์ชฝ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์ทจ์—…์„ ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.
์ผ์„ ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ด๋‚˜ C# ์ชฝ์œผ๋กœ ๊ด€์‹ฌ์ด ์ƒ๊ฒจ ๊ทธ ์ชฝ ๋ถ„์•ผ๋กœ ์ด์ง์„ ํ•˜๊ณ  ์‹ถ์€๋ฐ ์ž๋ฐ”์—์„œ C#์œผ๋กœ ์ง„๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š”๊ฒŒ ๊ดœ์ฐฎ์„๊นŒ์š”? ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๋Š” ๊ณณ๋„ ๋งŽ์ง€ ์•Š๋‹ค๊ณ  ํ•˜๊ธฐ๋„ ํ•ด์„œ ๋จผ์ € ์ผํ•˜๊ณ  ๊ณ„์‹  ๋ถ„๋“ค์—๊ฒŒ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์–ด ์—ฌ์ญ™๋‹ˆ๋‹ค.

์ „๊ณต์ด ์ปด๊ณต์ด๋ผ C, C++์— ๋Œ€ํ•œ ๊ธฐ์ดˆ ์ง€์‹์€ ์žˆ์ง€๋งŒ C# ์ชฝ์€ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณธ ์ ์ด ์—†์–ด์„œ ์งง์œผ๋ฉด 3๊ฐœ์›”์—์„œ ๊ธธ๊ฒŒ๋Š” 6๊ฐœ์›”๊นŒ์ง€ ๊ธฐ๊ฐ„์„ ์žก๊ณ  ๊ณต๋ถ€ํ•ด์„œ ์ทจ์—…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

C#์ด๋ž‘ ์œ ๋‹ˆํ‹ฐ ์ชฝ ๊ณต๋ถ€๋ฅผ ํ•  ์ƒ๊ฐ์ธ๋ฐ ๋” ํ•„์š”ํ•œ ์ง€์‹๋„ ์ถ”์ฒœํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ” ์ผ์ž๋ฆฌ ์žก์•˜์œผ๋ฉด ์ผ๋‹จ ๊ณ„์† ํ•˜์‹œ๋Š” ๊ฑฐ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
์ผ๋‹จ ์—ฌ๊ธฐ C#์€ ๋‹ท๋„ทํ”„๋ ˆ์ž„์›Œํฌ๋ผ ์—…๊ณ„์ƒํ™ฉ์ด ๋„์›€์ด ์•ˆ๋ ๊ฑฐ์˜ˆ์š”. ๊ฒŒ์ž„์€ ์ „ํ˜€ ๋‹ฌ๋ผ์„œ์š”.

๋‹ท๋„ท์ด๋‚˜ ์œ ๋‹ˆํ‹ฐ๋‚˜ C#์€ ๊ฐ™์ง€๋งŒ(๋ฒ„์ „์ฐจ์ด, ์ œ์•ฝ์€ ์žˆ์ง€๋งŒ์š”) ๊ฒŒ์ž„์€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ๊ณผ ๋งŽ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฒŒ์ž„๊ฐœ๋ฐœ ์ž์ฒด๋„ ๋ถ„์•ผ(2D, ์žฅ๋ฅด, ํด๋ผ/์„œ๋ฒ„, UI, ๊ทธ๋ž˜ํ”ฝ๋””์ž์ธ๋“ฑ)๊ฐ€ ๋งŽ์•„์„œ ๊ฐ๊ฐ ๋‹ค๋ฅด๊ธดํ•˜์ง€๋งŒ ๊ฒฝ๋ ฅ ๋ช‡๋…„ ์žˆ์–ด๋„ ๋‹ท๋„ท๊ฐœ๋ฐœ์ž ๋ฐ ์›น๊ฐœ๋ฐœ์ž์™€ ์œ ๋‹ˆํ‹ฐ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋กœ ํ˜ธํ™˜์ด ์•ˆ๋ ๊ฒ๋‹ˆ๋‹ค.
์œ ๋‹ˆํ‹ฐ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ๋‹ท๋„ท/์›น/์•ฑ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ž๋ฐ”/๋‹ท๋„ท์€ ํ”„๋ ˆ์ž„์›Œํฌ ๋‹จ์—์„œ ๊ณ ๋„ํ™”๋˜์–ด ์ค€๋น„๋œ๊ฒŒ ๋งŽ์•„ ๋„๋ฉ”์ธ์ง€์‹๊ณผ API๋งŒ ์•Œ์•„๋„ ๋˜์ง€๋งŒ ์œ ๋‹ˆํ‹ฐ๋Š” ์ค€๋น„๋œ๊ฒŒ ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค.
์ง์ ‘ ๋‹ค ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๋ฐ ์ง์ ‘ ๋‹ค ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค๋“  ์ˆ˜์ค€์ด ๋‹ค๋ฅธํ•„๋“œ์—์„œ ๋‹น์—ฐํ•˜๊ฒŒ ์žˆ๋Š” ๊ฒƒ๋“ค์ด ์—†๊ธฐ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ธฐ์ดˆ์ ์ธ ๊ธฐ๋Šฅ์„ ๋งค์ˆœ๊ฐ„ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ค๊ณ„๊ณ ๋ฏผํ•ด๊ฐ€๋ฉด์„œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š”๊ฒŒ ๋งž๋‚˜? ํ•˜๋ฉด์„œ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด UI์˜ ListView๋‚˜ MVVM ๊ฐ™์€๊ฑฐ ์“ธ๋•Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ค€๋น„๋œ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ/์ด๋ฒคํŠธ ์ฝœ๋ฐฑ ํ•ธ๋“ค๋Ÿฌ ์ด๋Ÿฐ๊ฒƒ๋“ค๋งŒ ์ฐพ์•„์„œ ์“ฐ๋ฉด๋˜์ง€๋งŒ ์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ๊ทธ ์‹œ์Šคํ…œ ์ž์ฒด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋กค ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๊ฐ€์ƒํ™”/์žฌ์‚ฌ์šฉ๋ทฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์Šคํฌ๋กค๋ทฐ ํ•˜๋‚˜ํ•˜๋‚˜ ํ™”๋ฉด๋†’์ด ๊ณ„์‚ฐํ•ด์„œ ์ด๋ฒคํŠธ๋„ ์ง์ ‘ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ทธ๋ž˜์•ผ๋˜์š”. MS๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ ๋งŒ๋“œ๋Š” ์ผ ์ผ๋ถ€๋ฅผ ์ง์ ‘ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—…๊ณ„๋Š” ๋˜ ๋ณด์•ˆ์— ๋ฏผ๊ฐํ•ด์„œ ์ง€์‹๊ณต์œ ๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•„๋“œ์—์„œ๋Š” ๊ณ ๋ฏผ์ž์ฒด๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ๋“ค์„ ์ง์ ‘๊ณ ๋ฏผํ•ด์„œ ๋งŒ๋“ค์–ด์•ผํ• ์ผ์ด ๋งŽ์•„์š”. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์Šค์Šค๋กœ ์ƒ๊ฐํ•ด๋ด์•ผํ•˜๊ณ  ์ด๋Ÿฐ ์„ค๊ณ„/์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งž๋‚˜?ํ•˜๋Š” ๊ณ ๋ฏผ์„ ๋งค์ˆœ๊ฐ„ํ•ด์•ผ๋˜๋Š”๋ฐ ์ฝ”๋”ฉ๊ฒฝํ—˜์ด ์ ์„์ˆ˜๋ก ๋” ์˜ค๋ฆฌ๋ฌด์ค‘์ด๊ฒ ์ฃ .
๋‹ท๋„ทํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ™์€๊ฑธ ์ง์ ‘๋œฏ์–ด๋ณด๊ณ  ์ดํ•ดํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ๋„์›€์ด ๋˜๊ธดํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ๋„ ์ผ๋ถ€๋งŒ ๊ฒน์น  ๋ฟ์ž…๋‹ˆ๋‹ค.

์–ด์ฐŒ๋ณด๋ฉด ์„ค๊ณ„์ƒ ๋” ์ €๊ธ‰์ˆ˜์ค€์—์„œ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋” ์›์ดˆ์ ์ด๋ผ ์žฌ๋ฏธ์žˆ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค๋งŒ ํƒ€์ด์–ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•œ๋‹ค๋Š”๊ฒŒ, ํ•ด์•ผ ํ•  ์ผ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๋ณด๋‹ˆ ์ง€์นฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ฝ”๋”ฉ๋ถ„์•ผ ์œ ๋ฃŒ์—์…‹ ๋„์›€๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ์ง€๋งŒ 3์ž ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์˜คํ”ˆ์†Œ์Šค๊ฐ™์€ ๊ฒฝํ–ฅ์ด ํฝ๋‹ˆ๋‹ค. ๋น„์ธ๊ธฐ ์—์…‹์€ ๋ˆ๋‚ด๊ณ ๋„ ์—…๋Žƒ๋Œ€์‘๋„ ์ž˜ ๋ชป๋ฐ›๊ณ  ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์ง์ ‘๋งŒ๋“œ๋Š”๊ฒŒ ์†ํŽธํ•ฉ๋‹ˆ๋‹ค.

5๊ฐœ์˜ ์ข‹์•„์š”

C#/.NET ์œผ๋กœ ์ผ์ปฌ์–ด์ง€๋Š” ์˜๋ฏธ๋Š” 3์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. .NET :
    .NET Core(๊ตฌ ๋ช…์นญ) ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ํ˜„์žฌ MS์—์„œ ํ™œ๋ฐœํžˆ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ๋ฉ”์ธํ„ฐ๋„Œ์Šค๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” Windows/Linux ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋ ˆ์ž„์›Œํฌ/์–ธ์–ด ์ž…๋‹ˆ๋‹ค.
    ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ท๋„ท๋ฐ๋ธŒ์—์„œ ์–ธ๊ธ‰๋˜๋Š” ๊ฒƒ์€ ์ด๊ฒƒ์„ ์ง€์นญํ•ฉ๋‹ˆ๋‹ค.

  2. .NET Framework:
    Windows ๋งŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ด์ „ ๋ฐฉ์‹์œผ๋กœ ์•„์ง๊นŒ์ง€ ๋งŽ์€ ํšŒ์‚ฌ๋“ค์ด ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.
    ์ผ์ข…์˜ ๋ ˆ๊ฑฐ์‹œ ํ˜•ํƒœ๋กœ ์ทจ๊ธ‰๋˜๊ณ  ์‹ ๊ทœ ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ๋Š” ์ง€์–‘ํ•˜๋Š” ํŠธ๋ Œ๋“œ์ž…๋‹ˆ๋‹ค.

  3. Unity C#:
    .NET Framework ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ํŒŒ์ƒ๋˜์–ด ๋‚˜์˜จ ๋ณ„๊ฐœ์˜ ์–ธ์–ด๋กœ, ๊ฒŒ์ž„์˜ ํŠน์„ฑ์— ๋งž๋Š” ๋‹ค์–‘ํ•œ ๊ณ ์œ  ๋ฌธ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ง์”€ํ•˜์‹  ๊ด€์‹ฌ ๋ถ„์•ผ๋Š” 3๋ฒˆ์ด์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค๋งŒ,

๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๋‹ท๋„ท๋ฐ๋ธŒ์—์„œ๋Š” ๋‹ค๋ฃจ์‹œ๋Š” ๋ถ„์„ ๊ฑฐ์˜ ๋ชป๋ดค์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์˜ˆ์ƒํ•ด๋ณด์ž๋ฉด ํ˜„์žฌ ์ž๋ฐ”๋ฅผ ํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๋‹ˆ,

์•„๋งˆ Java + MyBatis ๋ฅผ ์ด์šฉํ•œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ด ์ฃผ๋ ฅ์ด์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ํฌ์ง€์…˜์„ โ‘ .NET ์—์„œ ์ฐพ์•„๋ฉด .NET C# + EntityFramework(or Dapper)

์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒŒ์ž„์ชฝ์—์„œ๋Š” โ‘  ์„ ๋งŽ์ด ์ฐจ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ™œ๋ฐœํžˆ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๊ณ ,

๋ง์”€ํ•˜์‹  ์‹ค์งˆ์ ์ธ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ตฌ๋™๋˜๋Š” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์€ ์œ ๋‹ˆํ‹ฐ๋ณด๋‹จ C++ ์ด ์ฃผ๋ ฅ์ธ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ๊ฒŒ์ž„์—…๊ณ„์— ๊ทผ๋ฌดํ•˜์ง€๋Š” ์•Š์•„์„œ ์ •ํ™•ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ๋“ฃ๋Š” ์ด์•ผ๊ธฐ๋กœ๋Š”

์œ ๋‹ˆํ‹ฐ๋ฅผ ์‹ค๋ฌด๋กœ ์‚ฌ์šฉํ•˜๋Š” ํšŒ์‚ฌ๋“ค์€ ๋Œ€๋‹ค์ˆ˜ ๊ฒŒ์ž„์ด ์ฃผ๋ ฅ ๊ฐœ๋ฐœ์ด ์•„๋‹Œ,

๋‹ค๋ฅธ ์—…๊ณ„๋“ค์—์„œ ๊ฒŒ์ž„์  ์š”์†Œ๋“ค์„ ์ฐจ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ต์œก ์—…๊ณ„์—์„œ ๊ฒŒ์ž„์ ์ธ ์š”์†Œ๋ฅผ ํ™œ์šฉํ•œ ํ•™์Šต ํ”Œ๋žซํผ ๋“ฑ์ด ์žˆ๊ฒ ๋„ค์š”.

3๊ฐœ์˜ ์ข‹์•„์š”

์ฐธ๊ณ ๋กœ Unity๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Mono ๊ธฐ์ˆ  ์ž์ฒด์— ํฐ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, .NET ์˜์—ญ์˜ ๊ธฐ์ˆ  ์ง€ํ˜•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ๋„˜์–ด๊ฐˆ ํ•„์š”๊ฐ€ ์žˆ์–ด ๋Œ“๊ธ€์„ ๋‚จ๊น๋‹ˆ๋‹ค.

  • ์ง€๋‚œ 2024๋…„ 9์›” 17์ผ๋ถ€๋กœ, WineHQ ์žฌ๋‹จ์ด Mono ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์„ ์ด์ „๋ฐ›์•˜๊ณ , ์›๋ณธ Mono ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ์€ ์ค‘๋‹จ๋˜์—ˆ์œผ๋ฉฐ, Microsoft์˜ .NET Core ๋Ÿฐํƒ€์ž„์— ๊ธฐ์ˆ ์ด ๋ณ‘ํ•ฉ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    • ๋ฌผ๋ก  WineHQ ์žฌ๋‹จ์˜ Mono ๋Ÿฐํƒ€์ž„์€ ๊ณ„์† ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์„ฑ์ด ๊ธฐ์กด๊ณผ๋Š” ๋‹ค๋ฅด๋ฉฐ, ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์ค‘์‹ฌ์ด ์•„๋‹Œ Wine ํ”„๋กœ์ ํŠธ๊ฐ€ ์ถ”๊ตฌํ•˜๋Š” Windows ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํฌ๋กœ์Šคํ”Œ๋žซํผ ์‹คํ–‰ ์ „๋žต์— ๋ฐฉ์ ์„ ๋‘๋Š” ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋˜๋ฏ€๋กœ ์›๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ฒฉ๊ณผ๋Š” ๋งŽ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • Unity๋Š” Mono ํ”„๋กœ์ ํŠธ ์›๋ณธ์„ forkํ•˜์—ฌ ๋ณธ์ธ๋“ค์˜ ์ž์ฒด์ ์ธ .NET ๋Ÿฐํƒ€์ž„ ๊ฐœ๋ฐœ์„ ์ง€์†ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์›๋ณธ Mono ํ”„๋กœ์ ํŠธ, WineHQ์˜ Mono ํ”„๋กœ์ ํŠธ์™€๋Š” ๋ถ„๋ฆฌ๋œ Mono ๋Ÿฐํƒ€์ž„ ์ฝ”๋“œ๋กœ ์ œํ’ˆ์— ๊ธฐ๋Šฅ์„ ํƒ‘์žฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ Unity์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” C#๊ณผ Mono ๋Ÿฐํƒ€์ž„์€ .NET๊ณผ ํ˜ธํ™˜์„ฑ์ด ์žˆ๋Š” ๊ธฐ์ˆ ์ด์ง€๋งŒ, ์›๋ณธ .NET ๊ธฐ์ˆ ๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ„๊ฒฉ์„ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด .NET ํ‘œ์ค€ (.NET Standard)์ด๋ฉฐ, Unity๋Š” .NET Standard 2.0์˜ ๊ทœ์•ฝ์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” .NET Core 2.x ๋ฒ„์ „๋Œ€์™€ .NET Framework 4.6.x ๋ฒ„์ „๋Œ€์™€ ํ†ต์šฉ๋˜๋Š” ํ‘œ์ค€ ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค.
  • ์ด๋Ÿฐ ๋งฅ๋ฝ์—์„œ, Unity์˜ C#๊ณผ .NET ๋Ÿฐํƒ€์ž„ ์ง€์›์€ ์ตœ์„ ์˜ ๋…ธ๋ ฅ (Best Effort)์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ œ .NET ๊ธฐ์ˆ ๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ์„ ์ดํ•ดํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„์šธ๋Ÿฌ Unity ๊ฐœ๋ฐœ์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ ๋‹ท๋„ท๋ฐ๋ธŒ๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ Unity ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋‚˜ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ฐพ์•„๋ณด์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

Mono์— ๋Œ€ํ•ด์„œ๋Š” ์˜ˆ์ „์— .NET Core๋กœ ๋ฐ”๊ฟ€๊บผ๋‹ค ๋ผ๋Š” ์–˜๊ธฐ๊ฐ€ ์žˆ์—ˆ๊ณ  ์‹ค์ œ๋กœ ์–ด๋Š ์ •๋„ ์ง„์ฒ™๋„ ๋œ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์š”.

2๊ฐœ์˜ ์ข‹์•„์š”

๋„ค, ๋ง์”€ํ•˜์‹  ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ ์ตœ์‹  ๋ฒ„์ „์˜ Unity๋ฅผ ์จ์•ผ ํ•œ๋‹ค๋Š” ์ „์ œ ์กฐ๊ฑด์ด ๋”ฐ๋ผ ๋ถ™๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ์‹  ๋ฒ„์ „์˜ Unity๋กœ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฌ์ „ํžˆ fork ๋ฒ„์ „์˜ Mono์™€ IL2CPP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Unity ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์‹œ๋„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋˜์–ด ์ €๋Š” ๋ณด์ˆ˜์ ์ธ ์ž…์žฅ์œผ๋กœ ์ด์•ผ๊ธฐํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

์ •ํ˜„๋‹˜์ด ๋Œ“๊ธ€์„ ์ด์ œ ๋‹ค์…”์„œ ์ง€๊ธˆ ๊ธ€์ด ์ฒ˜์Œ ๋ˆˆ์— ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.

๊ฒŒ์ž„์—…๊ณ„, .NET Framework ๊ธฐ๋ฐ˜ ์ œ์กฐ์—…, JAVA ๊ฐœ๋ฐœ ๋ชจ๋‘ ๊ฒฝํ—˜ํ•œ ์ž…์žฅ์—์„œ ๋‚˜์ค‘์— ๋ณด์‹ค ๋ถ„๋“ค์ด ์žˆ์„ ๋“ฏ ํ•˜์—ฌ ์กธ๋ฆฌ์ง€๋งŒ ๋ช‡ ์ž ๋‚จ๊ฒจ๋†“๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํ˜„ ์‹œ์ ์—์„œ ์žฌ๋ฏธ๋ฅผ ๋– ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋จน๊ณ  ์‚ด๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด JAVA ๊ฐœ๋ฐœ์ด ๋” ์œ ๋ฆฌํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  2. ๊ฒŒ์ž„ ์—…๊ณ„์— ๊ฐ€๊ณ  ์‹ถ์œผ์‹  ๊ฒƒ์ด๋ฉด ๊ฒŒ์ž„ ์„ฑํ–ฅ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์กฐ๊ธˆ ๋” ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  3. C#์— ๋Œ€ํ•ด์„œ๋Š” Unity์—์„œ ์“ฐ๋Š” C#์ด๋‚˜ .NET์˜ C#์ด๋‚˜ ๊ฐ™์€ ๊ฒ๋‹ˆ๋‹ค๋ผ๊ณ  ์ธ์‹ํ•˜๋Š” ๊ฒŒ ๋” ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ”์„ ๋•Œ ๋‚˜์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Unity๋Š” ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋ฐฐ์šธ ๊ฒƒ์ด ๋งŽ๊ณ  ์„ธ๊ณ„๊ด€์ด ์žˆ์„ ์ •๋„์ง€๋งŒ .NET ์œ„์—์„œ ๋™์ž‘ํ•œ๋‹ค๋Š” ์ ์€ ์•Œ๊ณ  ๊ณ„์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

๋ญ”๊ฐ€ ์„ค๋ช…์ด ์ด์ƒํ•˜๋‹ค๋ฉด ํ˜„์žฌ ๋งค์šฐ ์กธ๋ ค์„œ ๊ทธ๋Ÿฐ ๊ฑฐ๋‹ˆ ๋„ˆ๊ทธ๋Ÿฌ์ด ์–‘ํ•ด๋ฅผโ€ฆ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”