본문 바로가기

분류 전체보기142

delegate 를 기반으로 한 상태 기계 구현해보기 C#에서 상태 기계를 구현할 때, if-else 또는 switch-case 문을 사용하는 방식보다 델리게이트(delegate)를 활용하면 코드의 가독성과 유지보수성이 훨씬 좋아집니다.이 글에서는 델리게이트를 활용한 상태 기계 구현 방법을 설명하고, 자기 클래스 내부에서 직접 상태를 변경하는 구조를 적용하는 방법을 소개하겠습니다.  상태 기계 (State Machine) 란?상태 기계는 프로그램이 특정 상태 (State) 를 가지며, 조건에 따라 다른 상태로 전환되는 구조를 의미합니다. 게임 개발에서 자주 사용되며, 플레이어의 행동, UI 상태, AI 동작 등을 관리하는 데 유용합니다. 상태 기계를 사용하는 이유* if-else 또는 switch-case 문을 줄여 코드의 가독성을 높일 수 있습니다.* 상.. 2025. 3. 12.
유니티 Coroutin 에서 continue 를 쓸 때 주의할 점 유니티에서 코루틴을 사용할 때 continue 와 yield return 의 차이를 이해하는 것은 매우 중요합니다. 특히 while (true) 같은 무한 루프를 사용할 때, continue 만 사용하면 예상치 못한 성능 저하가 발생할 수 있습니다. 아래와 같은 코드를 살펴보겠습니다.private IEnumerator SpawnColumn(){ WaitForSeconds wait = new(GameData.PipeSpawnTime); while (true) { if (!GameManager.Instance.IsGameActive) continue; Instantiate(pipesPrefab, transform.position, Quaternio.. 2025. 3. 12.
필드 (Field) 와 속성 (Property) 에 대해서 C# 에서 객체의 데이터를 저장하는 방법으로 필드(Field) 와 속성(Property) 이 있습니다.두 개념은 비슷해 보이지만, 실제로는 중요한 차이점이 있으며, 속성을 사용하는 이유도 분명합니다.이 글에서는 둘 간의 차이 그리고 더 나아가 람다 표현식으로 표현하는 방법까지 알아보도록 하겠습니다. 필드 (Field) 란?필드는 클래스 내부에서 데이터를 저장하는 가장 기본적인 방법입니다. 보통 private 접근 제한자로 선언하여 외부에서 직접 접근할 수 없도록 합니다. 이렇게 하면 객체 내부에서만 값을 조작할 수 있어 보호가 가능하지만, 다른 코드에서 값을 변경하거나 읽으려면 별도의 메서드를 구현해야 합니다.예를 들어, name이라는 필드를 직접 사용하면 외부에서 값을 가져오거나 변경할 수 없습니다. .. 2025. 3. 11.
UIManager를 활용한 효율적인 UI 업데이트 구조 게임을 개발할 때 UI 업데이트를 어떻게 관리할 것인가 하는 문제는 매우 중요합니다.초기에는 UI 요소가 적기 때문에 간단한 싱글톤 UIManager로도 충분하지만, 게임이 점점 커지면서 UI 요소가 늘어나면 유지보수가 어려워질 수 있습니다.이번 글에서는 기본적인 UIManager 방식부터 시작해, UI 요소가 많아질 때의 문제점과 이를 해결하는 이벤트 기반 UI 업데이트 방식까지 차근차근 살펴보겠습니다. UIManager 를 활용한 기본적인 UI 관리 방식일반적으로 UI를 업데이트할 때, FindObjectOfType() 을 사용해서 UI 요소를 찾거나, 싱글톤 UIManager를 활용하는 방식이 많이 사용됩니다. 여기서는 싱글톤 UIManager를 활용하는 기본적인 예제를 먼저 살펴보겠습니다.usi.. 2025. 3. 11.
event Action 을 활용한 이벤트 처리 게임을 만들다 보면 특정 상황에서 여러 객체가 동시에 반응해야 할 때가 많습니다. 예를 들어, 플레이어가 사망하면 게임 오버 화면이 표시되고, 점수가 저장되며, 배경음악이 멈추는 상황이 있을 수 있습니다. 이를 효율적으로 관리하기 위해 event와 Action을 활용한 이벤트 시스템을 사용할 수 있습니다.  event Action의 개념어떤 마을에서 "불이야!" 라고 외쳤다고 가정해봅시다.이 소리를 들으면 각자의 역할을 가진 사람들이 자동으로 반응합니다. 소방관은 불을 끄러 출동하고 ... 이웃들은 대피하며 ...방송국은 긴급 속보를 내보냅니다.  즉, 불이 난 사람이 일일이 지시하지 않아도 "불이야!" 라는 신호만 전달하면 관련된 사람들이 각자 반응하는 구조입니다.게임에서도 동일한 개념을 적용할 수 있.. 2025. 3. 11.
Static 과 Instance ( feat.Singleton ) static 변수와 일반 변수의 차이와 접근 방식을 이해하는 것이 중요합니다. 특히, static 변수는 클래스 단위에서 관리되고, 일반 변수는 객체(인스턴스) 단위에서 관리되므로, 서로의 접근 방식이 다릅니다. 이번 글에서는 static 변수와 일반 변수의 차이를 이해하고, 접근 방식을 정리해보겠습니다. static 변수와 일반 변수의 차이static 변수는 클래스 소속public class Example{ public static int StaticValue = 100; // static 변수} StaticValue는 Example 클래스 자체에 속해 있으며, 객체를 만들지 않고 접근해야 합니다.위에서 언급한 클래스 단위에서 관리된다는 말은 객체를 만들지 않아도 바로 쓸 수 있다라는 말로 이해하.. 2025. 3. 11.