유니티 버전 - 6000.0.34f1
목차
- 필요한 설정
- 코드 및 적용
필요한 설정
1. InputSystem -> Action Maps -> UI - Actions - Navigate에서 각 방향을 키보드 방향키와 맞게 설정합니다, 만약 DefaultInputActions를 사용하신다면 생략해도 무방합니다
2. Evnet System과 Input System UI Input Module이 Hierarchy에 존재해야하고 Actions Asset이 알맞게 설정되어있어야합니다
코드 및 적용
이동시키고자 하는 버튼들의 Navigation을 Explicit으로 변경합니다
Select On XXX에는 해당하는 방향키를 입력했을때 포커스가 옮겨져야하는 오브젝트를 지정하여줍니다, 현재 Button은 위에 아무것도 없고 아래에만 Button(1)이 존재하기 때문에 Select On Down 에만 목표 버튼을 설정해 주었습니다
중간의 버튼은 위아래로 이동 가능해야 하기에 Select On Up에 Button, Select On Down에 Button(2)를 설정해 주었습니다
그리고 Event System의 First Selected에 가장 위의 버튼을 지정하여줍니다 (핵심)
Popup UI가 생성되거나 파괴될때마다 First Selected를 교체하여주면됩니다, 주의할점은 부모 오브젝트가 아닌 실제 이동하고자하는 오브젝트를 지정해주어야 동작합니다, 아래는 First Selected를 지정하는 간단한 코드입니다
public class SomePopupUI : MonoBehaviour
{
public GameObject firstSelectedButton;
private void OnEnable()
{
SetInitialFocus();
}
public void SetInitialFocus()
{
EventSystem.current.SetSelectedGameObject(firstSelectedButton);
}
}
결과입니다, 마우스 사용 없이 키보드 ↑ ↓ 를 이용하여 버튼을 이동할 수 있습니
'코드 및 공부 > 입력 관리' 카테고리의 다른 글
화면 해상도 및 전체화면 여부 조절하기, Screen.SetResolution() (0) | 2025.02.04 |
---|---|
유니티 유용한 단축키 3가지 (0) | 2025.01.14 |
Dotween의 OnComplete()를 여러개 사용할때 작동하지 않는 문제 (0) | 2025.01.02 |
IsPointerOverGameObject()란? (0) | 2024.12.23 |
Input System을 이용한 움직임 구현 (9) | 2024.10.08 |