언리얼 엔진은 MVVM(Model-View-ViewModel) 아키텍처 패턴을 도입하여 UI와 데이터를 분리하고, 기존의 직접 바인딩 방식이 가진 확장성 한계를 해결합니다. 🏗️
뷰모델은 데이터와 뷰를 분리함으로써, 엔지니어링 지원 없이도 UI 디자이너가 화면 레이아웃을 자유롭게 재설계하고 리팩토링할 수 있도록 지원합니다. 🎨
동일한 뷰모델을 여러 다른 UI 뷰(예: 상세 타일 뷰와 목록 뷰)에 동시에 재사용하여 데이터를 제공할 수 있어 개발 효율성을 크게 높입니다. ♻️
뷰모델은 블루프린트 또는 C++로 생성할 수 있으며, 블루프린트를 활용한 프로토타이핑은 엔지니어의 개입 없이 빠른 테스트를 가능하게 합니다. 🛠️
뷰모델 인스턴스를 가져오거나 생성하는 방법에는 수동(Manual), 인스턴스 생성(Create Instance), 전역 뷰모델 컬렉션(Global View Model Collection), 프로퍼티 경로(Property Path), 리졸버(Resolver) 등 다양한 옵션이 있으며, 사용 사례에 따라 적절한 방식을 선택할 수 있습니다. ⚙️
단순 바인딩으로 처리하기 어려운 복잡한 UI 로직(예: 조건에 따른 텍스트 표시)은 위젯 내의 커스텀 함수를 통해 뷰모델 데이터를 활용하여 유연하게 구현할 수 있습니다. 🧠
뷰모델 바인딩의 방향성은 주로 단방향(VM -> Widget)으로 사용되며, 양방향(Widget -> VM)은 사용자 입력(텍스트 입력, 체크박스 등) 시 활용됩니다. 바인딩 타이밍 설정(즉시/지연)은 레이스 컨디션 문제를 완화하는 데 도움이 될 수 있습니다. ↔️
언리얼 엔진 5.5에 포함된 1,250개 이상의 변환 함수를 활용하면 데이터 타입을 변환(예: Bool을 Visibility로)하여, 위젯에 별도의 커스텀 함수를 만들 필요 없이 바인딩 내에서 로직을 처리할 수 있습니다. 🔄
여러 뷰모델 값을 동시에 사용할 때, 바인딩된 입력 파라미터와 블루프린트 Get 노드를 혼용하면 데이터 동기화 문제(레이스 컨디션)가 발생할 수 있으므로, 필요한 모든 값을 입력 파라미터로 전달하는 것이 중요합니다. ⚠️