본문 바로가기

분류 전체보기78

Unity 에서 Empty object 를 Scene 창에서 보이게 하는 방법 씬을 정리하다 보면, 눈에 보이지 않는 오브젝트들을 만들어야 할 때가 종종 있습니다.대표적으로 GameData, GameManager, SoundManager 같은 오브젝트들이 그런 예에 해당합니다.이러한 오브젝트들은 보통 빈 GameObject를 하나 만들고 그 위에 스크립트만 추가해서 사용하는 경우가 많습니다.즉, 씬에는 존재하지만 Scene 창에서는 아무것도 보이지 않기 때문에 나중에 찾기 어렵고 존재감도 약하게 느껴집니다. 아이콘을 추가해 빈 오브젝트를 씬에 표시해보세요이럴 때 아이콘(icon)을 설정해주면 매우 유용합니다.Unity 에서는 오브젝트에 아이콘을 지정하면 씬(Scene) 창에서 시각적으로 확인할 수 있도록 표시됩니다.빈 오브젝트를 선택한 후, Inspector 창 상단(오브젝트 이름.. 2025. 4. 30.
Parsing과 TryParse() 계열 함수들 Parsing 은 문자열을 특정 데이터 형식으로 변환하는 과정을 말합니다.예를 들어, 문자열 "123"을 정수형 int로 변환하는 것이 대표적인 예입니다.Parsing은 주로 입력 값 검증이나 데이터 변환을 위해 사용됩니다.문자열을 다른 형식으로 변환할 때, 특히 형 변환이 실패할 수 있는 경우를 대비하여 예외 처리를 고려해야 합니다. 예를 들어, "123"을 정수로 변환하는 건 문제가 없지만, "abc" 를 정수로 변환하려고 하면 예외가 발생할 수 있습니다. 이러한 예외를 처리하는 데 유용한 메서드가 바로 *TryParse()* 입니다. TryParse() 계열 함수들TryParse()는 형 변환이 실패할 가능성이 있는 경우 예외를 발생시키지 않고 안전하게 변환을 시도할 수 있는 메서드입니다. 형 변환.. 2025. 4. 30.
이벤트 관리를 위한 설계 제안 게임 매니저와 같은 싱글톤 클래스에서 모든 이벤트를 관리하는 방식은 초기에 유용하지만, 게임이 커짐에 따라 사소한 이벤트까지 게임 매니저가 처리하게 되어 코드가 비대해지고 복잡해지기 시작합니다. 이런 상황에서는 이벤트를 분리하여 관리하는 방식이 필요합니다. 이벤트 관리 방식의 문제점게임 매니저가 모든 이벤트를 관리하다 보면, 게임 로직과 UI 관련 코드가 혼합되어 유지보수가 어려워집니다. 또한, 이벤트가 늘어나면서 게임 매니저가 점점 비대해지고, 단일 책임 원칙에 어긋나게 됩니다. 예를 들어, 보너스 점수 증가, UI 업데이트, 플레이어 상태 변화 등 모든 이벤트를 게임 매니저가 관리하게 되면, 게임의 확장성에 한계를 가져오게 됩니다. 이벤트 전담 클래스를 도입한 해결책이벤트 전담 클래스를 도입하면, 게.. 2025. 4. 30.
Unity 에서 Singleton 클래스에 Instance로 접근하는 이유 C# 또는 Unity에서 싱글톤 클래스를 만들 때, 우리는 보통 두 가지 접근 방식을 선택하게 됩니다.하나는 Instance를 공개하여 Manager.Instance.SomeFunction()처럼 접근하는 방식이고, 다른 하나는 Instance를 숨기고 변수나 함수를 static으로 포장하여 Manager.SomeFunction()처럼 접근하는 방식입니다. 두 방법 모두 실제로 동작하지만, 장기적으로 보면 Instance를 명시적으로 사용하는 방식이 훨씬 낫습니다. Instance를 공개하는 방식public class GameManager : MonoBehaviour { public static GameManager Instance { get; private set; } public.. 2025. 4. 30.
속성은 컴파일 단계에서 변수를 자동 생성합니다 C# 어플리케이션에서 Property(속성)을 보면, 단순히 변수처럼 값을 저장하고 불러오는 것처럼 보입니다.하지만 실제로 속성은 변수와는 다릅니다.속성은 컴파일 단계에서 숨겨진 변수를 자동으로 생성하고, 이 변수에 값을 저장하거나 가져오는 메소드 형태로 동작합니다. Property는 데이터를 저장하는 것처럼 보이지만, 실제로는 값을 저장하고 읽어오는 메소드가 결합된 구조입니다. 예시public int Score { get; private set; } 겉으로 보기에는 Score라는 변수가 하나 있는 것처럼 보입니다.하지만 컴파일 시점에서는 다음과 같이 변환됩니다.[CompilerGenerated] private int k__BackingField; public int Score { [Compile.. 2025. 4. 28.
병합 할당 연산자(??=) 이해하기 ??= 연산자는 C#에서 null 병합 할당 연산자라고 부릅니다.C# 8.0 버전부터 추가된 기능으로, 코드를 훨씬 더 간결하게 만들어줍니다.간단히 말하면, 변수가 null이면 값을 할당하고, null이 아니면 아무것도 하지 않는다.이것이 핵심입니다. 이전에는 어떻게 썼나요???= 연산자가 없던 시절에는 이렇게 직접 null 체크를 해야 했습니다.if (legsTipActive == null) { legsTipActive = new List(); } 이 방식도 물론 잘 작동하지만, 간단한 동작을 위해 3줄이나 써야 했습니다. 지금은 어떻게 바뀌었나요?이제 ??= 연산자를 사용하면 한 줄로 같은 작업을 끝낼 수 있습니다.legsTipActive ??= new List(); 짧고, 깔끔하고, 읽기도 .. 2025. 4. 28.