본문 바로가기

전체 글120

bool isValue = (조건식) : 삼항 연산자를 보다 단순하게 C# 을 처음 배울 때, 다음과 같은 형태의 코드를 자주 접하게 됩니다:bool isEven = (number % 2 == 0) ? true : false; 처음에는 조건식의 결과를 true 또는 false로 나누어 대입하는 이 방식이 자연스럽고 익숙할 수 있습니다.삼항 연산자 (조건 ? A : B) 는 간단한 분기 처리를 할 때 자주 사용되는 문법이기도 합니다.하지만 위 코드는 다음과 같이 훨씬 더 간단하게 쓸 수 있습니다.bool isEven = (number % 2 == 0); 조건식을 그대로 대입해도 되는 이유조건식 (number % 2 == 0) 자체가 bool 값을 반환하기 때문에, 별도의 분기 처리 없이도 결과를 바로 bool 변수에 대입할 수 있습니다.다시 말해, 조건이 참이면 true, .. 2025. 4. 22.
구조체를 배열로 만들면 메모리 저장 위치는 어디일까? C# 에서 "구조체(struct)는 스택에 저장된다" 는 말을 자주 들어봤을 것입니다. 그런데 배열은 "힙에 저장된다"고 합니다. 그렇다면 "구조체를 배열로 만들면 어디에 저장될까?" 하는 궁금증이 생깁니다.이 글은 바로 그 궁금증을 풀기 위해 정리한 내용입니다. 구조체는 기본적으로 스택에 저장다음처럼 지역 변수로 구조체를 선언하면, 이 변수는 스택(stack)에 저장됩니다:void MyMethod(){ MyStruct s = new MyStruct(); // 스택에 저장됨} 값 타입(struct, int, float, bool 등) 은 참조 타입(class)과 달리 스택 메모리에 저장되는 것이 일반적입니다. 배열은 힙에 저장 (new 없이도)C#에서 배열은 참조 타입입니다. 즉, 배열 자체는 무조.. 2025. 4. 22.
Hierarchy 구조를 이용해 스크립트에서 제어하기 유니티에서는 오브젝트를 Inspector 창에서 일일이 등록해서 배열이나 리스트로 관리하는 경우가 많습니다. 하지만 이 방식은 관리도 번거롭고, 오브젝트가 많아지면 실수하기도 쉽습니다.좀 더 유연하고 효율적인 방법은 빈 오브젝트를 부모로 만들고, 자식 오브젝트들을 계층 구조로 정리한 뒤 스크립트에서 자동으로 접근하는 방식입니다. Transform을 기준으로 순환그런데 이때 중요한 점이 하나 있습니다. 자식을 순환하려면 GameObject 가 아닌 Transform 을 기준으로 순환해야 한다는 점입니다.왜냐하면, 유니티의 구조상 부모-자식 관계는 GameObject 가 아닌 Transform 이 관리하고 있기 때문입니다. * GameObject 클래스는 오브젝트의 이름, 태그, 컴포넌트 등 일반적인 정보를.. 2025. 4. 21.
유니티에서 SerializeField 란 무엇인가요? 유니티를 보다보면 SerializeField 라는 키워드를 종종 접하게 됩니다.또한 “이 변수는 직렬화되어야 인스펙터에 표시됩니다” 라는 설명도 흔히 들으실 수 있습니다.처음에는 생소하지만, 직렬화라는 개념은 의외로 단순하며 유니티를 이해하는 데 꼭 필요한 기본 요소입니다. 직렬화란?직렬화(Serialization) 란 데이터를 일렬로 쭉 줄 세우는 작업을 의미합니다.우리가 만든 클래스나 객체는 사람에게는 정돈된 구조로 보일 수 있지만, 컴퓨터나 파일 시스템, 네트워크에는 그대로 전달할 수 없습니다.그래서 객체 안의 데이터를 하나하나 꺼내어 연속된 형태로 변환하는 과정이 필요한데, 이것이 바로 직렬화입니다.이 과정을 통해 비로소 저장하거나 전송할 수 있는 형태가 됩니다. * 줄을 세우는 것 → 직렬화* .. 2025. 4. 20.
Unity 에서 지체없이 Play Mode 로 진입하는 방법 Unity에서 Play Mode로 진입할 때마다 몇 초간 진행 바가 나타난 후 실행이 시작되는 경험을 해보신 적이 있을 것입니다. 이는 Unity가 매번 스크립트와 씬을 초기화하는 과정 때문입니다. 단순한 테스트를 반복하는 개발 과정에서는 이 대기 시간이 다소 번거롭게 느껴질 수 있습니다. 이러한 경우에는 Edit > Project Settings > Enter Play Mode Settings 항목에서 제공하는 "Reload Domain" 및 "Reload Scene" 옵션을 통해 실행 속도를 개선할 수 있습니다. 이 두 항목의 체크를 해제하면, 매번 Play Mode 진입 시 초기화 과정을 생략하고 즉시 실행이 가능합니다. 진행 바 없이 곧바로 실행되므로, 반복 테스트 시 매우 유용합니다.   Rel.. 2025. 4. 14.
Audio Clip 을 Dictionary 로 관리하기 : Serializable 과 List 활용 Unity 에서 여러 AudioClip 을 관리하는 다양한 방법들이 존재하지만, 이번 글에서는 AudioClip 을 key 기반으로 관리할 수 있도록 Dictionary를 활용하고, Unity Inspector 창에서 오디오 데이터를 등록할 수 있도록 Serializable 클래스와 List 를 함께 사용하는 방법에 대해 소개하겠습니다.  System.Serializable먼저 아래와 같이 클래스를 정의할 때 자주 보게 되는 [System.Serializable] 속성부터 살펴보겠습니다.[System.Serializable]public class KeyAudioClip{ public string key; public AudioClip clip;} 이 속성은 Unity가 해당 클래스를 Inspe.. 2025. 4. 8.