[TIL] Unity - UI Keyboard Navigation

MINO·2024년 9월 24일

2024-09-24


구현 목표

해당 GIF 를 통해 다음을 확인할 수 있었다.

  1. 시작 화면에서 마우스가 아닌 키보드로 버튼 사이를 이동한다.
  2. 게임 시작 시, Start 버튼에 커서가 올라가있다.
  3. 커서가 올라가있는 버튼은 파란색 배경과 애니메이션이 활성화한다.

UI Navigation

UI 요소 간의 이동을 관리하는 시스템으로, 주로 Button, Slider, Toggle 같은 UI 요소에서 사용된다.

사용자가 마우스 이외에도 키보드, 게임패드, 터치 입력 등을 통해 UI를 탐색하기 위해 사용한다.

Button 의 Navigation 속성을 통해 플레이 모드에서 UI 요소 네비게이션이 어떻게 제어될 지 설정한다.


필드기능
None키보드 네비게이션을 사용하지 않음
Horizontal수평으로 이동
Vertical수직으로 이동
Automatic자동으로 이동
Explicit다른 방향키를 사용하여 컨트롤의 이동 방향을 지정
Visualize씬 창에서 설정한 네비게이션을 시각적으로 표시할 수 있음

Visualize 를 통해, 각 요소마다 연결된 요소를 다음처럼 화살표로 확인할 수 있다.


ButtonNavigation

버튼 별 Navigation 연결해주기

  • Start : 버튼 기준 왼쪽 - Exit / 버튼 기준 오른쪽 - Options
  • Options : 버튼 기준 왼쪽 - Start / 버튼 기준 오른쪽 - Exit
  • Exit : 버튼 기준 왼쪽 - Options / 버튼 기준 오른쪽 - Start

추후, 랭킹 시스템을 추가하게 되면 이 부분도 수정이 필요해보인다.

참고로, Horizontal Layout Group 을 통해 일정한 간격을 유지하게 설정해주었다.


EventSystem

캔버스를 추가하게 되면, 자동으로 생성되는 EventSystem 이다.

UI 와 상호작용하는 데 필요한 핵심 구성 요소로,
사용자의 입력(마우스, 터치, 키보드) 등을 감지하고, UI요소에 전달한다.


### First Selected 게임을 처음 실행 시, Start 버튼이 활성화 되어있다.

EventSystem의 해당 속성에 StartBtn 버튼을 넣어주는 방법으로 해결하였다.


트러블 슈팅

상황

게임에서는 방향키 화살표만을 통해 버튼을 이동하지만,
현재 기본으로 주어지는 Actions Asset - DefaultInputActions 에는 WASD 키도 포함되어 있었다.


문제

UI / Navigate / Keyboard 에서 W,A,S,D 키를 지운 뒤, Save Asset 을 해도
저장이 되지 않고 처음 셋팅으로 초기화된다.

패키지 캐쉬의 오류로

  1. 유니티 재시작
  2. Library 폴더 삭제
  3. Input System 패키지 최신 상태

등의 방법도 시도해보았지만, 해결이 안된 상태이다.


결과물

UI Navigation 을 통해 마우스 없이 키보드만으로 UI의 버튼을 선택할 수 있게 되었다.

profile
안녕하세요 게임 개발하는 MINO 입니다.

0개의 댓글