C# 개발 공부 9일

규수·2026년 3월 6일

개발 공부 일지

목록 보기
9/44

오늘은 게임의 상태를 체계적으로 관리하는 방식으로 사용되는 설계 방식 상태머신(StateMachine)과 이를 효율적으로 구현하기 위한 Switch구문에 대해 정리해보겠습니다.

1) StateMachine

상태머신은 객체가 가질 수 있는 여러 가지 상태를 정의하고, 한 번에 오직 하나의 상태에만 머물게 하며 특정 조건에 따라 상태를 전환하는 설계 방식입니다.
유니티 게임 개발에서 플레이어의 행동(대기, 이동, 점프, 공격)이나 적 AI의 패턴을 관리할 때 필수적으로 사용됩니다.

상태머신의 가장 큰 장점은 복잡한 로직을 상태 단위로 분리하여 관리할 수 있다는 점입니다.
상태가 추가되더라도 기존 코드를 크게 수정하지 않고 새로운 상태를 정의하여 연결할 수 있어 유지보수 측면에서 효율적입니다.

<style>
using UnityEngine;

// Enum을 활용하여 상태의 종류를 정의합니다.
public enum PlayerState
{
    Idle,
    Move,
    Jump,
    Attack
}

public class PlayerController : MonoBehaviour
{
    // 현재 플레이어의 상태를 저장하는 변수
    public PlayerState currentState = PlayerState.Idle;

    void Update()
    {
        // 상태에 따른 로직 처리는 아래 Switch문 파트에서 다룹니다.
    }

    // 상태를 변경하는 함수
    public void ChangeState(PlayerState newState)
    {
        currentState = newState;
        Debug.Log("상태 변경: " + newState);
    }
}
</style>

2) Switch

Switch문은 하나의 변수 값을 여러 개의 선택지(case)와 비교하여 일치하는 블록의 코드를 실행하는 제어문입니다. 상태머신을 구현할 때 if~else if문을 길게 나열하는 것보다 Switch문을 사용하는 것이 훨씬 가독성이 좋고 코드 작성이 효율적입니다.

<style>
using UnityEngine;

public class StateMachineExample : MonoBehaviour
{
    public PlayerState currentState = PlayerState.Idle;

    void Update()
    {
        // 현재 상태(currentState)에 따라 실행할 로직을 선택합니다.
        switch (currentState)
        {
            case PlayerState.Idle:
                // 대기 상태일 때의 로직
                Debug.Log("플레이어가 대기 중입니다.");
                break;

            case PlayerState.Move:
                // 이동 상태일 때의 로직
                Debug.Log("플레이어가 이동 중입니다.");
                break;

            case PlayerState.Jump:
                // 점프 상태일 때의 로직
                Debug.Log("플레이어가 점프했습니다.");
                break;

            case PlayerState.Attack:
                // 공격 상태일 때의 로직
                Debug.Log("플레이어가 공격합니다.");
                break;

            default:
                // 어떤 케이스에도 해당하지 않을 경우 (예외 처리)
                Debug.Log("알 수 없는 상태입니다.");
                break;
        }
    }
}
</style>

오늘은 게임 로직의 기초 뼈대가 되는 상태머신의 개념과 이를 구현하는 가장 직관적인 도구인 Switch문에 대해 배웠습니다.

상태머신을 사용하는 것이 캐릭터에게 단 하나의 상태만 유지하도록 강제할 수 있다는 것과, Switch문을 통해 그 복잡한 분기들을 깔끔하게 정리할 수 있다는 점이 인상적이었습니다.
단순히 기능을 구현하는 것을 넘어, 코드 설계에 있어 효율적이고 가독성 있게 작성하는 방법에 대해서 배워볼 수 있는 시간이었습니다.

0개의 댓글