728x90

๐ŸŽฎ Unity Study 91

[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..

[Unity Associate Programmer ์ž๊ฒฉ์ฆ ์ค€๋น„] 5๊ฐ•. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค - ํด๋ฆญ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ

5.1๊ฐ• - ๋งˆ์šฐ์Šค ํด๋ฆญ - Unity Learn ๊ฐœ์š”: ์ด์ œ ๋งˆ์ง€๋ง‰ ๋‹จ์›์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹œ์ž‘ ํŒŒ์ผ์„ ์ž„ํฌํŠธํ•œ ํ›„ ๊ฒŒ์ž„์˜ ๋ทฐ๋ฅผ 2D๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํด๋ฆญํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€๊ฒŸ ์˜ค๋ธŒ์ ํŠธ์˜ ๋ชฉ๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. learn.unity.com 1. Bad, Good Object ๋งŒ๋“ค๊ธฐ ํด๋ฆญ์‹œ ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋งˆ๋‹ค ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Collider๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ , ์œ„๋กœ ์˜ฌ๋ผ๊ฐ”๋‹ค๊ฐ€ ๋–จ์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ์œ„ํ•ด Rigidbody๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 2. ๊ฐ์ฒด๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๊ณต์ค‘์— ๋˜์ง€๊ธฐ public class Target : MonoBehaviour{ private Rigidbody targetRb; private float minSpeed = 12; private float maxSpeed = 16..

[Unity Associate Programmer ์ž๊ฒฉ์ฆ ์ค€๋น„] 3๊ฐ•. ์žฅ์• ๋ฌผ ๋„˜๊ธฐ ๊ฒŒ์ž„(์• ๋‹ˆ๋ฉ”์ด์…˜, ํŒŒํ‹ฐํด, ์‚ฌ์šด๋“œ)

3๋‹จ์› - ์Œํ–ฅ ๋ฐ ํšจ๊ณผ - Unity Learn ์ด ๋‹จ์›์—์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ถฉ๋Œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๊ฐ€์˜ค๋Š” ์žฅ์• ๋ฌผ์„ ๋›ฐ์–ด๋„˜์œผ๋ฉฐ ๋น ๋ฅธ ์†๋„๋กœ ์ง„ํ–‰๋˜๋Š” ๋ฌดํ•œ ํšก์Šคํฌ๋กค ๋Ÿฌ๋‹ ๊ฒŒ์ž„์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ํƒ€์ž…์„ ์ œ์ž‘ํ•˜๋ฉด์„œ ์–ด๋–ป๊ฒŒ ์Œ์•…๊ณผ learn.unity.com 1. Space๋ฐ” ๋ˆ„๋ฅผ ์‹œ, ์บ๋ฆญํ„ฐ๊ฐ€ ์ ํ”„ํ•˜๋Š” ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ ์บ๋ฆญํ„ฐ์— ์ค‘๋ ฅ์ค˜์•ผ ํ•˜๋‹ˆ๊นŒ rigidbody ์ถ”๊ฐ€ํ•˜๊ณ  ~ using UnityEngine; public class PlayerController : MonoBehaviour{ const float jumpForce = 10f; const float gravityModifier = 3f; Rigidbody playerRb; void Start(){ playerRb = transform.GetCo..

[Unity Associate Programmer ์ž๊ฒฉ์ฆ ์ค€๋น„] 2๊ฐ•. ๋™๋ฌผ ๋จน์ด์ฃผ๊ธฐ ๊ฒŒ์ž„

random ์œ„์น˜์—์„œ randomํ•œ ๋™๋ฌผ๋“ค์ด ์ƒ์„ฑ๋˜์–ด ๋†๋ถ€์—๊ฒŒ ๋›ฐ์–ด๋“ ๋‹ค. ๋†๋ถ€๋Š” ์ขŒ์šฐ๋กœ ์ด๋™ํ•˜๋ฉฐ ๋™๋ฌผ๋“ค์—๊ฒŒ ๋จน์ด๋ฅผ ์ค˜์•ผ ํ•œ๋‹ค. 1. Player x ๊ฐ’ ์ œํ•œํ•˜๊ธฐ using UnityEngine; public class PlayerController : MonoBehaviour { private const float SPEED = 10f; private const float X_RANGE = 13f; private float horizontalInput; void Update(){ //keep the player in the bounds if (transform.position.x > X_RANGE) transform.position = new Vector3(X_RANGE, transform.positio..

[Unity Associate Programmer ์ธ์ฆ์‹œํ—˜] ์ž๊ฒฉ์ฆ ๋ฐ ์‹œํ—˜์ผ์ • ์‹ ์ฒญ๋ฐฉ๋ฒ•

์œ ๋‹ˆํ‹ฐ ์ธ์ฆ์‹œํ—˜์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์–ด์š”. ์‹œํ—˜์ผ์ •์ด ์•ˆ๋‚˜์™€์žˆ์–ด์„œ ํ—ค๋ฉ”๋‹ค๊ฐ€ ๋ฉ”์ผ์˜จ๊ฑฐ ๋ณด๊ณ  ๋”ฐ๋ผํ•˜๋‹ˆ๊นŒ ์‹œํ—˜์ผ์ • ํ™•์ธ ๋ฐ ์„ ํƒ์ด ๋์–ด์š”. ํ˜น์‹œ ์ž๊ฒฉ์ฆ ๊ฒฐ์ œ ์ „์— ์ž๊ฒฉ์ฆ ์‹ ์ฒญ ๋ฐ ๊ณต๋ถ€๋ฐฉ๋ฒ•, ์‹œํ—˜์ผ์ •์ด ๊ถ๊ธˆํ•œ ๋ถ„๋“ค์ด ์žˆ์„๊นŒ๋ด ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ท. (๋„์›€๋˜์‹œ๋ฉด ๊ณต๊ฐ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์—ฌใ…Žใ…Ž) * ์ž๊ฒฉ์ฆ ์‹ ์ฒญ ์‚ฌ์ดํŠธ https://unity.com/products/unity-certifications/associate-programmer Unity Certified Associate: Programmer Earn an industry-recognized credential and start on a path to a career within the real-time 3D development ecosystem. unity.com ์œ ๋‹ˆํ‹ฐ ์‚ฌ์ดํŠธ..

[Unity Associate Programmer ์ž๊ฒฉ์ฆ ์ค€๋น„] 1๊ฐ•. 3D ์ž๋™์ฐจ ์žฅ์• ๋ฌผ ํ”ผํ•˜๊ธฐ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ

*Player ์‹œ์  ์ด๋™/ํšŒ์ „ ๋ฐฉ๋ฒ• 1) custom package ๋ถˆ๋Ÿฌ์˜ค๊ธฐ Asset > Import Package > Custom Package ์—์„œ package ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 2) Sceneํ™”๋ฉด์˜ Player ์‹œ์  ์ด๋™/ํšŒ์ „ ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•œ ์ƒํƒœ์—์„œ WASD ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ํ™”๋ฉด ํฌ์ปค์Šค ์ด๋™. Alt ํ‚ค + ์˜ค๋ฅธ์ชฝ ๋“œ๋ž˜๊ทธ๋กœ ๋ณด์ด๋Š” ํ™”๋ฉด xyz ํšŒ์ „ Scene Tool์˜ View Tool ๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ 3) ๊ฐ์ฒด ๋‹น๊ฒจ์„œ ์ดˆ์  ๋งž์ถ”๊ธฐ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ•œ ์ƒํƒœ์—์„œ ์”ฌ(Scene) ๋ทฐ์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๋‘๊ณ  Fํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ดˆ์ ์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด ๋”๋ธ” ํด๋ฆญํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ 4) Trasform Position reset Trasnform ์  3๊ฐœ ํด๋ฆญ > Reset Property > Position ํด๋ฆญ 5) To..

[C#] List ๊ฐ™์€ Enumerable ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค

https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable?view=net-7.0 Enumerable Class (System.Linq) Provides a set of static (Shared in Visual Basic) methods for querying objects that implement IEnumerable. learn.microsoft.com List ๋Š” IEnumerable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ›๊ณ  ์žˆ๋‹ค. IEnumerable์€ Enumerator๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค. ๋ฐ˜๋ณต์—์„œ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ IEnumerable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. *IEnumerable: Enumerator์—๊ฒŒ ๋‹ค์Œ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ํ•˜๋‚˜์”ฉ ๋„˜..

[Unity] ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์—์…‹ ๊ด€๋ฆฌ

๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์„ ๋งŒ๋“ค ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํŠนํžˆ ์ค‘์š”ํ•˜๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์“ฐ๋ฉด OS๊ฐ€ ์•ฑ์„ ์ฃฝ์—ฌ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋Ÿฐ๊ฑธ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋ƒ? Unity Profiler๋ฅผ ์•ฑ์— ๋ฌผ๋ ค์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ข€ ๋” ์ž์„ธํžˆ ๋ณด๋ ค๋ฉด Memory Profiler๋ฅผ ๋ณด๋ฉด๋œ๋‹ค. ๊ธฐ๋ณธ์ œ๊ณต๋˜์ง„ ์•Š๊ณ  Package Manager์—์„œ ๋‹ค์šด๋ฐ›๋Š” ๊ฒƒ. Editor์—์„œ๋„ ๋˜์ง€๋งŒ ์ •ํ™•ํ•œ ์ˆ˜์น˜๋Š” ์•„๋‹ˆ๊ธฐ์— Target Device ์— ์˜ฌ๋ ค์„œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. * ๋ฉ”๋ชจ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” Asset ๊ด€๋ฆฌ 1. ์ค‘๋ณต ๋ฆฌ์†Œ์Šค : Unity ๋Š” ์ค‘๋ณต ํŒŒ์ผ์„ ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‹ค์ˆ˜๋กœ ๋™์ผํ•œ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ํด๋”์— ๋„ฃ์ง€๋Š” ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์ž. 2. Audio 1) Force To Mono ์ฒดํฌํ•˜๊ธฐ. 2) Load Type: Decompress on lo..

[Unity] IL2CPP, Mono, JIT

C# vs C++ : GC ์žˆ์Œ ์—†์Œ ์ฐจ์ด. C#์— GC(Garbage Collector)๊ฐ€ ์ƒ๊ฒจ์„œ ์ƒ์‚ฐ์„ฑ์ด ๋” ์ข‹๋‹ค. Mono, IL2CPP, Burst : ์ฝ”๋“œ๋ฅผ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ธ Scripting Backend์˜ ์ข…๋ฅ˜ Mono๋Š” IL2CPP ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ž„. IL2CPP๊ฐ€ ๋” ๋ณด์•ˆ์„ฑ์ด ๋†’๊ณ  Android/iOS ํ˜ธํ™˜๊ฐ€๋Šฅ. cf) Unity ์ž์ฒด ์—”์ง„์€ C++์ด๊ณ  Script ๋Š” C#์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ตฌ์กฐ. Mono : Mono๋Š” JIT(Just-In-Time) ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์š”์ฒญ์‹œ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•จ : 64bit ์ง€์› ์•ˆํ•จ. IL2CPP : IL2CPP๋Š” AOT(Ahead-of-Time) ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹คํ–‰ ์ „์— ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปดํŒŒ์ผ ํ•จ. :..

[Unity] Texture Compression ๋ฐฉ์‹

* Texture ์••์ถ•์ด ํ•„์š”ํ•œ ์ด์œ ? GPU ์—์„  1Pixel ๋‹น 32Bit ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค. ํ”ํžˆ ์••์ถ•๋ฐฉ์‹์œผ๋กœ PNG๋‚˜ JPG๋ฅผ ์–ธ๊ธ‰ํ•˜๋Š”๋ฐ PNG ๋‚˜ JPG ์ด๋ฏธ์ง€ 1MB ์งœ๋ฆฌ๋ฅผ GPU์— ์˜ฌ๋ฆฌ๋ฉด 32 Bit ๋ผ์„œ 4MB ๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค. -> 4๋ฐฐ๊ฐ€ ๋˜๋Š” ๊ฒƒ. PNG ๋‚˜ JPG ๋Š” ๋””์Šคํฌ ์ €์žฅ๊ณต๊ฐ„์„ ์•„๋ผ๊ธฐ ์œ„ํ•œ ์••์ถ•๋ฐฉ์‹์ด์ง€ GPU ๊ณต๊ฐ„์„ ์•„๋ผ๊ธฐ ์œ„ํ•œ ์••์ถ•๋ฐฉ์‹์ด ์•„๋‹ˆ๋‹ค. GPU ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์••์ถ•๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ GPU ์‚ฌ์šฉ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š”๊ฑฐ๋‹ค. ์ฆ‰, ๋น ๋ฅธ ๋””์ฝ”๋”ฉ, ๋žœ๋ค ์•ก์„ธ์Šค, ์ธ์ฝ”๋”ฉ ์ƒํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌ, ์‚ฌ์ด์ฆˆ ์ ˆ์•ฝ(๋ฉ”๋ชจ๋ฆฌ, ์ €์žฅ์žฅ์น˜) ๋“ฑ์„ ์œ„ํ•ด GPU๋ฅผ ์œ„ํ•œ Texture Compression์ด ํ•„์š”ํ•˜๋‹ค. * ๊ฐ€๋ณ€ ๋น„์œจ ์••์ถ• vs ๊ณ ์ • ๋น„์œจ ์••์ถ• 1. ๊ฐ€๋ณ€ ๋น„์œจ ์ธ์ฝ”๋”ฉ //์••์ถ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€๋ณ€ ๋น„..

728x90