728x90

๐ŸŽฎ Unity Study 90

[C#] ? Question Mark

C# 6.0 ๋ถ€ํ„ฐ Null ์ฒดํฌ ์—ฐ์‚ฐ์ž ? ์™€ ?? ๊ฐ€ ์ถ”๊ฐ€ ๋˜์—ˆ๋”ฐ. ๊ทธ๋ž˜์„œ ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ™์€ ์˜๋ฏธ์ด๋‹ค. if(current == null){ current = gameObject; } current.Start(); current?.Start(); ๋˜ํ•œ C# 8.0 ๋ถ€ํ„ฐ ๋„ ํ• ๋‹น์ž ??= ๋„ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

[C#] C# ๋ฒ„์ „๋ณ„ ์ถ”๊ฐ€๊ธฐ๋Šฅ ์‚ฌํ•ญ, .NET & Visual Studio ๋ฒ„์ „

ํ˜„์žฌ C# ๋ฒ„์ „์€ 11 (2022๋…„ 11์›” release) ๊นŒ์ง€ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  C#์€ .NET Framwork ๋ฒ„์ „๊ณผ Visual Studio ๋ฒ„์ „์ด ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ๋‹ค. [Target๋ฒ„์ „C# ์–ธ์–ด ๋ฒ„์ „ ๊ธฐ๋ณธ๊ฐ’] Target .NET Version Visual Studio Version C# ์–ธ์–ด Version ๊ธฐ๋ณธ๊ฐ’ .NET 7.x VS 2022 C# 11 .NET 6.x VS 2017 C# 10 .NET 5.x VS 2019 16.8 C# 9.0 .NET Core 3.x VS 2019 16.3 C# 8.0 .NET Standard 2.0 VS 2017 C# 7.3 .NET Standard 1.x VS 2017 C# 7.3 .NET Framework ๋ชจ๋‘ VS 2017 C# 7.3 ์ฆ‰ C# ..

[C#] Hash ?

Hash 1) ์ž„์˜์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๊ณ ์ • ์ž๋ฆฌ์ˆ˜์˜ ์œ ์ผํ•œ? ๋ฌธ์ž์—ด๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. 2) ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๋ฅธ ๊ฐ’์—๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. 3) ๋งŒ๋“ค์–ด์ง„ Hash ๊ฐ’์—์„œ ์›๋ž˜์˜ ๊ฐ’ ์—ญ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ฌ์šฉ์˜ˆ์‹œ) ์•ˆ์‹ฌ๋ฒˆํ˜ธ, ๋ฌธ์„œ์˜ ๋ฌด๊ฒฐ์„ฑ, ๋น„ํŠธ์ฝ”์ธ ๋ฌด๊ฒฐ์„ฑ, ๊ณต์ธ์ธ์ฆ์„œ(+๋น„๋Œ€์นญ ์•”ํ˜ธํ™”ํ‚ค) ...

[C#] lambda์‹์ด๋ž€ ? ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ ?

lambda ์‹ ? ํ•จ์ˆ˜์— ์ธ์ž๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด, + ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ๋ฌธ๋ฒ•. lambad ์‹์€ ์„ ์–ธํ•œ ์ž๋ฆฌ์—์„œ'๋งŒ' ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ์ง€์ •์ž, ๋ฐ˜ํ™˜๊ฐ’, ์ด๋ฆ„์ด ํ•„์š”์—†๋‹ค. ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํ˜ธ์ถœํ•ด์„œ ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๋‹ค. ์œ„ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ lambda ์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด์ž. public void LambdaTest(){ Debug.Log("LambdaTest"); } () => { Debug.Log("LambdaTest"); } ์ธ์ž์™€ ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€๊นŒ public int Add(int a, int b){ return a + b; } (int a, int b) => { return a + b; } ์‚ฌ์šฉ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž. ..

[C#] ๋™๊ธฐ/๋น„๋™๊ธฐ (feat. Coroutine, Task, async/await)

*๋™๊ธฐ: ์ผ์„ ์ฃผ๊ณ  ๊ทธ ์ผ์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ. ex) ๋งคํ‘œ์†Œ ์ค„ *๋น„๋™๊ธฐ: ์ผ์„ ์ค€ ํ›„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‚ด ์ผ์„ ํ•˜๋Š” ๊ฒƒ. ex) ์ปคํ”ผ์ˆ ์ง„๋™๋ฒจ #๋™๊ธฐ์‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์˜ˆ์‹œ using System; public class TestClass { static void Main(string[] args) { PrintNumber(); PrintStart(); Console.ReadKey(); } private static void PrintNumber() { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } private static void PrintStart() { for (int i = 0; i < 10; i++) { Console.W..

[C#] Action ๊ณผ Func (feat. Delegate, callback)

Delegate: ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ Action : ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ Func: ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ callback: ์ž‘์—…์ด ๋๋‚ฌ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ์šฉ๋„ * Delegate ๊ธฐ๋ณธํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. public class TestClass { delegate void MyDelegate(); public TestClass() { MyDelegate myDelegate = FuncTest; myDelegate(); } public void FuncTest() { } } Delegate๋ฅผ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ดํƒ€์ž…, ์ธ์ž๊ฐ’์— ๋งž๊ฒŒ ์„ ์–ธํ•œ๋‹ค. ์‚ฌ์šฉ์ „์— ์„ ์–ธํ•˜๊ณ  ํ˜ธ์ถœํ•œ๋‹ค. ํ™œ์šฉ1) ์–ด๋–ค ๋ฒ”์ฃผ ์•ˆ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ๋•Œ public class TestClass { delegate void ..

Unity HTTP ํ†ต์‹ (UnityWebRequest, Get/Post, IMultipartFormSection)

* HTTP: ์›น์ƒ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— request/response ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ. HTTP ๋ฉ”์†Œ๋“œ ์ค‘ ๋งŽ์ด ์“ฐ๋Š” 2๊ฐ€์ง€. GET, POST. 1) GET: ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋ฉ”์†Œ๋“œ. ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Body ์— ๋‹ด์ง€ ์•Š๊ณ  ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ํ†ตํ•ด ์ „์†กํ•œ๋‹ค. URL์˜ ๋์— ?์™€ ํ•จ๊ป˜ ์ด๋ฆ„๊ณผ ๊ฐ’์œผ๋กœ ์Œ์„ ์ด๋ฃจ๋Š” ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ด๋ฉด &๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ „์†กํ•œ๋‹ค. ex) ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ํฌํ•จํ•œ URL ์ƒ˜ํ”Œ www.example-url.com/resources?name1=value1&name2=value2 2) POST: ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ/๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋ฉ”์†Œ๋“œ. ์ „์†กํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ๋ฅผ HTTP ๋ฉ”์„ธ..

[Unity Associate Programmer] ์œ ๋‹ˆํ‹ฐ ์ธ์ฆ์‹œํ—˜ ๊ณต๋ถ€ ๋ฐ ํ•ฉ๊ฒฉ ํŒ

์œ ๋‹ˆํ‹ฐ ์ธ์ฆ์‹œํ—˜ ์ค€๋น„ ํ›„๊ธฐ -> ๊ฒฐ๊ณผ๋Š” ํ•ฉ๊ฒฉ...! ์ž๊ฒฉ์ฆ ์‹œํ—˜๋‹ต๊ฒŒ ์• ๋งค?ํ•œ๊ฒŒ ๋งŽ์•„์„œ 700์  ๋งŒ์ ์— 537์ ์œผ๋กœ ๊ฒจ์šฐ ํ•ฉ๊ฒฉํ–ˆ์–ด์š”. ํŒ์€ ๋ฌธ์ œ๋ฅผ ์ •๋ง์ •๋ง ์ž˜ ์ฝ๊ณ , ๊ฒ€ํ† ์ฒดํฌ ๊ธฐ๋Šฅ์„ ์ž˜ ํ™œ์šฉํ•ด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๋Š” ๊ฑฐ์—์š”. ์‹œํ—˜์‹œ๊ฐ„์€ 100๋ถ„ ๋™์•ˆ 60๋ฌธํ•ญ์„ ํ‘ธ๋Š” ๊ฑด๋ฐ, ์งง์œผ๋ฉด 30๋ถ„ ์•ˆ์ด๋ฉด ํ’€ ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”. ๊ฐ์ ์ด ๋งŽ์ด ๋œ๊ฑธ๋กœ ๋ณด์•„ ๋Œ€์ถฉ ์ฝ์œผ๋ฉด ํƒˆ๋ฝํ•  ์ˆ˜๋„ ์žˆ๋Š” ์‹œํ—˜ ๊ฐ™์Šต๋‹ˆ๋‹ค ใ…  ์œ ๋‹ˆํ‹ฐ ๊ณต์‹ ์‚ฌ์ดํŠธ์— ๋ฌด๋ฃŒ๋กœ ์ž๊ฒฉ์ฆ ์ค€๋น„ ํŠœํ† ๋ฆฌ์–ผ?์ด ์žˆ๋Š”๋ฐ, ๊ฑฐ๊ธฐ์— ํ€ด์ฆˆ๋„ ์žˆ๊ฑฐ๋“ ์š”. ๊ทธ ํ€ด์ฆˆํ˜•์‹์œผ๋กœ ๋‚˜์˜ค๋‹ˆ๊น ๊ผญ๊ผญ๊ผญ ๋‹ค ํ’€์–ด๋ณด์‹œ๋Š”๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š”. ํŠœํ† ๋ฆฌ์–ผ์˜ ๊ตฌํ˜„๋ฌธ์ œ๋“ค, C# ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…๋ฌธ์ œ, Git ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜์˜ค๋‹ˆ๊นŒ ๊ผญ๊ผญ๊ผญ ํ€ด์ฆˆ๋ผ๋„ ๋‹ค ๋ณด๊ณ  ์œ ํ˜• ์ตํžˆ์‹œ๊ณ  ๊ฐ€์„ธ์š”! ์•„๋ž˜์— ์‹œํ—˜ ์ ‘์ˆ˜๋ฐฉ๋ฒ•, ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ์ •๋ฆฌํ•œ๊ฑฐ ์ฒจ๋ถ€ํ•ด๋‘˜๊ฒŒ..

[Unity Associate Programmer ์ž๊ฒฉ์ฆ ์ค€๋น„] ์ด๋ก ๊ฐœ๋… ์ •๋ฆฌ

์”ฌ ํ”Œ๋กœ ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์‹ค์‹œ๊ฐ„ 3D ๊ฒฝํ—˜ ๋””์ž์ธ ์†Œ๊ฐœ - Unity Learn ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์‹ค์‹œ๊ฐ„ 3D ๊ฒฝํ—˜ ๋””์ž์ธ์˜ ๊ธฐ์ดˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์šธ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ œ์ž‘ ๋‹จ๊ณ„๋ฅผ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค. ๋””์ง€ํ„ธ ๊ฒฝํ—˜์„ ์ œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๋””์ž์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒ€ํ†  learn.unity.com 1. ์”ฌ ํ”Œ๋กœ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ 1) ์‹ค์‹œ๊ฐ„ 3D ๊ฒฝํ—˜ ๋””์ž์ธ ์†Œ๊ฐœ [๋””์ž์ธ ํ”„๋กœ์„ธ์Šค] Pre-projection -> Production -> Post-production -> Operations ์‚ฌ์ „ ์ œ์ž‘ -> ์ •์‹์ œ์ž‘ -> ์‚ฌํ›„ ์ œ์ž‘ -> ์šด์˜ ํŒŒ์ดํ”„๋ผ์ธ ๊ด€๋ฆฌ์— ์žˆ์–ด์„œ ๋””์ž์ธ ํ”„๋กœ์„ธ์Šค๋Š” ์ œ์ž‘ ์‚ฌ์ดํด์˜ ์•ž 3 ๋‹จ๊ณ„์ธ ์‚ฌ์ „ ์ œ์ž‘, ์ •์‹ ์ œ์ž‘, ์‚ฌํ›„ ์ œ์ž‘์— ํ•ด๋‹นํ•œ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1๋‹จ๊ณ„: ๋ฌธ์ œ ํŒŒ์•… ..

[Unity Associate Programmer ์ž๊ฒฉ์ฆ ์ค€๋น„] ํ€ด์ฆˆ ์˜ค๋‹ต๋…ธํŠธ

ํ€ด์ฆˆ 5 - Unity Learn ์ด ํ€ด์ฆˆ์—์„œ๋Š” 5๋‹จ์›์—์„œ ํ•™์Šตํ•œ ๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋…์— ๋Œ€ํ•œ ์ง€์‹์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. learn.unity.com ์ •๋‹ต: name == "player" && !isDead && health < 5 ํ’€์ด: ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋ ค๋ฉด ๋‘ ๊ฐœ์˜ =๊ธฐํ˜ธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€์šธ ๊ฐ’์€ true๋กœ ์„ ์–ธํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ false ์ƒํƒœ์ด๋ฉฐ, !isDead์˜ ๋Š๋‚Œํ‘œ๋Š” false์ธ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•ฉ๋‹ˆ๋‹ค. health = 3์ด๋ฏ€๋กœ, health < 5 ๊ฒ€์‚ฌ๋Š” true์ž…๋‹ˆ๋‹ค. ์ •๋‹ต: 99 ํ’€์ด: ์ด ํ•จ์ˆ˜๋Š” ๋งˆ์šฐ์Šค๋ฅผ ๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋ฏ€๋กœ, 10์ดˆ ๋™์•ˆ ์ˆ˜๋ฐฑ ๋ฒˆ ์ •๋„๋Š” ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ์กฐ๊ฑด๋ฌธ์ด ์นด์šดํ„ฐ๊ฐ€ 99 ์ดํ•˜์ผ ๋•Œ์—๋งŒ ์ฐธ์ด๋ฏ€๋กœ, 100 ์ดํ›„์—๋Š” ๋Š˜์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ •๋‹ต: "Welcom..

728x90