MVC 패턴 ( Model - View - Controller )
프로그램의 구조를 세 가지 역할로 나누는 디자인 패턴이다.
주로 유니티나 웹 개발 ( MVC 프레임워크 ) 에서 코드 구조를 깔끔하게 유지하기 위해 사용한다.
| Model | 데이터 ( 상태 ) 와 로직을 담당 | Player의 체력 , 골드 , 경험치 등 | 캐릭터의 실제 능력치 |
| View | 화면 표시 ( UI 등 ) 를 담당 | 체력바 , 점수 , UI , 애니메이션 등 | 캐릭터가 보여지는 모습 |
| Controller | 입력을 받아서 Model 과 View 를 조정 | 키보드 입력 - 캐릭터 이동 처리 | 조종하는 플레이어 자신 |
- Controller 가 사용자 입력을 감지
└ 키보드 W 키 입력 - Controller 가 Model 의 데이터를 변경
└ playerModel.MoveForward( ) - Model 이 상태를 바꾸고 이벤트를 발생시킨다
└ 체력 감소 시 OnHealthChanged 실행 - View 가 그 이벤트를 받아 UI 를 업데이트
└ 체력바 숫자 갱신
▼ Model
public class PlayerModel
{
public int Health { get; private set; } = 100;
public Action<int> OnHealthChanged;
public void TakeDamage(int amount)
{
Health -= amount;
OnHealthChanged?.Invoke(Health);
}
}
▼ View
public class PlayerView : MonoBehaviour
{
[SerializeField] private Text healthText;
public void UpdateHealthUI(int currentHealth)
{
healthText.text = $"체력: {currentHealth}";
}
}
▼ Controller
public class PlayerController : MonoBehaviour
{
private PlayerModel model;
private PlayerView view;
void Start()
{
model = new PlayerModel();
view = GetComponent<PlayerView>();
model.OnHealthChanged += view.UpdateHealthUI;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
model.TakeDamage(10);
}
}
정리
- Model : 게임의 데이터 / 상태 담당
- View : 시각적 표현 ( UI , 그래픽 ) 담당
- Controller : 입력 처리 및 Model - View 연결 담당
참고 자료
https://unity.com/kr/how-to/unity-ui-optimization-tips
'🧊Unity Basic > 디자인패턴' 카테고리의 다른 글
| State Pattern (0) | 2025.11.20 |
|---|---|
| FSM ( Finite State Machine ) (0) | 2025.11.11 |
| Adapter Pattern 핵심 코드 (0) | 2025.10.24 |
| Observer Pattern (0) | 2025.10.21 |
| Singleton 과 Generic (0) | 2025.10.21 |