UI 애니메이션 구현
위젯 타임라인에 위치·크기·투명도 키를 배치하고 그래프에서 재생·정지·반복을 제어해 UI 전환을 만듭니다.
기능이 잘 동작하는 UI라도 정적이고 밋밋하면 사용자 경험이 떨어질 수 있습니다.
UI 요소의 등장/퇴장, 크기 변화, 색상 전환 같은 애니메이션은 시각적 완성도와 피드백을 높여 몰입감을 개선합니다.
이번 절에서는 위젯 블루프린트에서 UI 애니메이션을 구현하는 기본 개념과 활용법을 정리합니다.
UI 애니메이션이란 무엇이며 왜 필요한가?
UI 애니메이션은 위젯 블루프린트 내의 UI 요소들(버튼, 텍스트, 이미지, 패널 등)의 속성(위치, 크기, 회전, 투명도, 색상 등)을 시간에 따라 변화시키는 것을 말합니다.
UI 애니메이션이 중요한 이유는 다음과 같습니다.
- 시각적 피드백 제공: 버튼을 클릭했을 때 잠깐 커졌다가 돌아오거나, 아이템을 획득했을 때 아이콘이 톡 튀어 오르는 등, 사용자 행동에 대한 즉각적이고 명확한 피드백을 제공합니다.
- 정보 흐름 가이드: 새로운 UI 패널이 스르륵 나타나거나, 중요 메시지가 번쩍이는 등의 애니메이션은 사용자의 시선을 유도하고 정보의 중요도를 강조합니다.
- 미적인 완성도 향상: UI에 생동감을 불어넣어 더 세련되고 전문적인 느낌을 줍니다. 이는 전반적인 게임의 품질을 높이는 데 기여합니다.
- 사용자 경험(UX) 개선: 전환이 부드럽지 않고 갑작스럽게 나타나는 UI는 사용자를 혼란스럽게 할 수 있습니다. 애니메이션은 이러한 전환을 자연스럽게 만들어 사용자 경험을 향상시킵니다.
위젯 블루프린트에서 UI 애니메이션 생성
위젯 블루프린트에서 UI 애니메이션을 생성하는 과정은 타임라인을 사용하는 시퀀서(Sequencer)와 유사합니다.
- 위젯 블루프린트 에디터를 엽니다.
- 디자이너(Designer) 탭으로 이동합니다.
애니메이션(Animations)패널(일반적으로 좌측 하단에 위치)에서+ 애니메이션(+ Animation)버튼을 클릭합니다.- 새 애니메이션 이름을 지정합니다. (예:
FadeInAnim,ButtonPulse)
- 새로 생성된 애니메이션을 선택합니다.
- 타임라인 뷰에서
+ 트랙(+ Track)버튼을 클릭합니다. - 애니메이션을 적용할 위젯을 선택합니다. (예:
StartGameButton위젯 변수)Is Variable은 그래프에서 해당 위젯 참조에 접근할 때 사용합니다. 애니메이션 트랙의 대상 지정과 구별합니다. - 선택된 위젯에 대한 트랙이 추가됩니다. 이제 이 트랙의 오른쪽에 있는
+버튼을 클릭하여 애니메이션을 적용할 속성을 선택합니다.Render Transform: 위치(Translation), 회전(Rotation), 크기(Scale), 기울기(Shear) 등 위젯의 시각적 변형을 조절합니다.Color And Opacity: 위젯의 색상과 투명도(Alpha)를 조절합니다. (Text나 Image 위젯에 유용)Render Opacity: 패널을 포함한 위젯 전체의 표시 불투명도를 조절합니다. 모든 속성이 트랙을 지원하는 것은 아니므로 해당 위젯에 제공되는 키프레임 가능한 속성을 선택합니다.
-
키프레임(Keyframe) 설정
- 타임라인 헤드를 시작 지점(예: 0초)으로 옮깁니다.
- 선택한 속성(예:
Render Transform의Translation) 옆의 키프레임 추가 버튼(+아이콘)을 클릭합니다. 이때 현재 위치의 속성 값이 키프레임으로 기록됩니다. - 타임라인 헤드를 끝 지점(예: 1초)으로 옮깁니다.
- 디테일 패널에서 해당 위젯의 속성 값(예:
Translation의 Y값을 -100에서 0으로 변경)을 변경하고 다시 키프레임 추가 버튼을 클릭합니다. - 이제 0초부터 1초까지 위젯이 지정된 속성 변화를 통해 움직이는 애니메이션이 생성됩니다.
애니메이션 미리보기: 타임라인의 재생 버튼을 클릭하여 애니메이션을 미리 볼 수 있습니다.
UI 애니메이션 재생 및 제어 (그래프 탭)
애니메이션을 만들었다면, 이제 블루프린트 로직에서 이 애니메이션을 재생하거나 제어해야 합니다.
그래프(Graph) 탭으로 이동합니다.
애니메이션 변수 사용: 애니메이션 패널에 있는 애니메이션 에셋(예: FadeInAnim)을 그래프 탭으로 드래그하면, 해당 애니메이션에 대한 참조 변수(Get 노드)가 생성됩니다.
애니메이션 재생 노드: 이 애니메이션 변수 핀에서 드래그하여 다음과 같은 노드들을 검색하고 연결하여 애니메이션을 제어합니다.
Play Animation: 애니메이션을 한 번 재생합니다. 가장 기본적인 재생 노드입니다.In Animation: 애니메이션 변수를 연결합니다.Play Mode:Forward(정방향),Reverse(역방향) 선택.Playback Speed: 재생 속도 조절 (1.0이 기본).Num Loops To Play: 반복 횟수 (0은 무한 반복).
Play Animation Forward/Play Animation Reverse: 현재 재생 상태에서 정방향·역방향 재생을 제어합니다. 시작 위치를 직접 지정하려면Play Animation의Start at Time을 사용합니다.Pause Animation: 애니메이션을 일시 정지합니다.Stop Animation: 애니메이션을 완전히 중지합니다.Is Animation Playing: 현재 애니메이션이 재생 중인지 확인합니다.
Play Animation의 일반 실행 출력은 재생 완료를 기다리는 핀이 아닙니다.Bind to Animation Event에서 대상 애니메이션과 Finished 이벤트를 지정하고 커스텀 이벤트를 등록하거나, 위젯의On Animation Finished이벤트에서 대상 애니메이션을 확인합니다. 중지로도 종료 알림이 올 수 있으므로 닫기 완료 처리에는 현재 닫는 상태인지도 함께 검사합니다.
WBP_MainMenu 위젯 블루프린트를 엽니다.
디자이너 탭에서 Canvas Panel 자체 또는 그 안에 있는 Vertical Box 같은 메인 패널을 선택하고 디테일 패널에서 Is Variable을 체크하여 이름을 RootPanel이라고 지정합니다.
애니메이션 패널에서 + Animation을 눌러 FadeInAnim이라는 애니메이션을 추가합니다.
FadeInAnim을 선택하고 + 트랙 버튼을 눌러 RootPanel 위젯을 선택합니다.
RootPanel 트랙의 + 버튼을 눌러 Render Opacity 속성을 추가합니다. Canvas Panel·Vertical Box에 텍스트용 Color And Opacity가 있다고 가정하지 않습니다.
- 타임라인 헤드를 0.0초에 두고
Render Opacity를 0.0으로 설정한 뒤 키프레임을 추가합니다. - 타임라인 헤드를 1.0초에 두고
Render Opacity를 1.0으로 변경합니다. - 키프레임 추가 버튼을 클릭합니다.
- 이제 0초부터 1초까지 패널이 투명했다가 불투명해지는 애니메이션이 완성됩니다.
그래프 탭으로 이동합니다.
Event Construct 뒤에 Play Animation을 연결하고 FadeInAnim 참조를 In Animation에 넣습니다. Construct는 재추가 때 반복될 수 있습니다. 처음 보이기 전 RootPanel의 기본 Render Opacity를 0으로 맞추고, 이 예제는 한 번 재생한 뒤 1을 유지하도록 Restore State를 끕니다.
이제 게임을 플레이할 때 메인 메뉴가 갑자기 튀어나오는 대신, 부드럽게 페이드 인되는 것을 확인할 수 있습니다.
UI 애니메이션의 고급 기능
- 트랙 그룹: 여러 속성을 동시에 애니메이션할 때, 관련 속성들을 그룹화하여 관리할 수 있습니다.
- 보간 곡선(Interpolation Curve): 키프레임 간의 속성 변화 방식을 조절하여 더욱 자연스러운 움직임을 만듭니다. (Linear, Ease In/Out, Custom Curve 등)
- 이벤트 트랙: 지원되는 이벤트 트랙으로 애니메이션의 특정 지점에서 블루프린트 처리를 연결할 수 있습니다. (예: 애니메이션 재생 중 특정 프레임에서 사운드 재생)
- 애니메이션 시퀀스 활용: 복잡한 UI 애니메이션은 여러 개의 짧은 애니메이션을 조합하여 만들 수 있습니다.
UI 애니메이션은 게임의 시각적 품질과 사용자 경험을 크게 향상시키는 중요한 요소입니다.
단순히 움직이는 것을 넘어, 사용자와 게임 간의 소통을 원활하게 돕는다는 점을 이해하고 적극적으로 활용하는 것이 좋습니다.
이번 절에서는 위젯 블루프린트에서 UI 애니메이션을 구현하는 기본 개념과 생성, 제어 방법에 대해 알아보았습니다.
움직임을 줄이는 선택지도 제공하고, 반복 입력 시 재생을 다시 시작할지 무시할지 정하세요. 투명도가 0이라는 이유만으로 입력을 받지 않는 것은 아니므로, 닫힌 UI의 Visibility·활성 상태도 함께 관리합니다.