언리얼 엔진 - MVC 아키텍처를 활용한 UI 시스템 구축
게임 프로젝트에서는 체력(Health)과 같은 속성을 화면에 표시해야 합니다. 이를 위해 언리얼 엔진에서는 위젯 블루프린트를 사용하여 데이터를 시각적으로 표현합니다. 이 문서에서는 데이터를 효율적으로 관리하고 표시할 수 있는 MVC 아키텍처 기반의 UI 시스템을 구축하는 방법을 설명합니다.
● UI 요소(체력 바, 아이콘 등)를 시각적으로 표현
● 언리얼 엔진에서는 UUserWidget 클래스를 기반으로 위젯 블루프린트를 생성
● 게임 내 속성 데이터(체력, 마나, 경험치 등)를 관리
● Attribute Set과 같은 클래스에 데이터가 저장됨
● 모델과 뷰(View) 사이에서 데이터 전송 및 처리
● 데이터 수집 및 계산 후, 위젯에 전달
● 사용자 입력(버튼 클릭 등)을 모델에 반영
● 데이터 및 게임의 로직 관리
예시: 플레이어의 체력, 레벨, 마나 등
● 데이터를 시각적으로 표시
예시: 체력 바, 스킬 아이콘
● 모델과 뷰를 연결하는 중간 역할
● 데이터 처리 및 계산, 사용자 입력 반영
예시: 버튼 클릭 시 속성 변경 처리
Model → Controller → View
View → Controller → Model
● 일방향 의존성 유지
모델 → 컨트롤러 → 뷰.
변경이 쉽게 가능하고 유지보수가 편리.
● 모델에서 데이터를 수집하여 뷰에 전달
예시: 체력 값을 가져와 체력 바에 표시
● 버튼 클릭, 슬라이더 조정 등 사용자 입력 처리
● 입력 데이터를 모델에 반영
● 뷰와 모델 간의 직접 의존성을 제거
● 유연한 데이터 관리 및 확장 가능
● 커스텀 위젯 클래스 생성
UAuraUserWidget: 위젯의 기본 클래스
● 위젯 컨트롤러 클래스 생성
UAuraWidgetController: 데이터 수집 및 처리 전담
● HUD 서브클래스 생성
HUD에서 위젯 컨트롤러 및 위젯 초기화
● 데이터 바인딩 및 시각화
위젯에서 데이터를 표시하고 사용자 입력 처리
● 모듈화: 각 요소(Model, View, Controller)가 독립적 관리.
● 확장성: 시스템 변경 시 특정 요소만 수정하면 됨.
● 재사용성: 컨트롤러나 뷰를 다른 프로젝트에 쉽게 활용 가능.
● 유지보수 용이: 코드의 명확한 구조로 관리가 쉬움.
이제 우리는 MVC 아키텍처를 기반으로 UI 시스템을 설계하고 구현할 준비가 되었습니다. 다음 단계에서는:
커스텀 위젯 및 컨트롤러 클래스 생성.
HUD 클래스에서 초기화 및 데이터 바인딩 구현.
위젯에서 체력 및 마나 데이터를 시각화.