UI 툴킷은 이벤트 시스템을 사용하여 입력을 처리하고 모든 활성 패널에 이벤트를 전송합니다. 이 시스템은 입력 이벤트를 처리하고 UI의 적절한 요소로 전송합니다.
Unity는 레거시 Input Manager와 새로운 Input System 패키지라는 두 가지 입력 처리 시스템을 제공합니다. Input Manager는 핵심 Unity 플랫폼의 일부이며, Input System 패키지를 설치하지 않는 한 기본 시스템으로 사용됩니다. 새로운 Input System 패키지는 유연성이 향상되고 더 광범위한 기기 및 플랫폼을 지원합니다.
UI 툴킷의 이벤트 시스템은 두 시스템 모두에서 이벤트를 수신할 수 있습니다. 이 시스템은 활성 입력 처리 시스템을 자동으로 감지하고 그에 따라 이벤트를 처리합니다.
프로젝트에서 활성 입력 처리 시스템을 설정하려면 다음 단계를 따르십시오.
Edit > Project Settings > Player를 선택합니다.
Player 창의 Other Settings > Configuration에서 Active Input Handling을 다음 옵션 중 하나로 설정합니다.
프로젝트에서 Input System 패키지가 활성화되어 있으면 UI 툴킷은 입력 시스템에 정의된 동작을 기반으로 이벤트를 자동으로 가져옵니다. 이러한 동작을 설정하려면 Edit > Project Settings > Input System Package로 이동합니다.
Input Manager로 입력 처리를 설정하려면 Edit > Project Settings > Input Manager로 이동합니다.
UI 툴킷에서 NavigationMoveEvents가 생성되는 방식에 영향을 주도록 Horizontal 및 Vertical 축을 설정할 수 있습니다. UI 툴킷에서 NavigationSubmitEvent 및 NavigationCancelEvents를 생성하도록 Submit 및 Cancel 동작을 수정할 수도 있습니다.
입력 시스템 패키지로 입력 처리를 설정하려면 Edit > Project Settings > Input System Package로 이동합니다.
Input System 패키지는 Input Manager보다 향상된 설정 기능을 제공합니다. 프로젝트 전체 동작 에셋을 사용하여__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary 툴킷에 NavigationMoveEvents, PointerMoveEvent(‘UI / 포인트’ 동작), PointerDownEvent, PointerUpEvent(‘UI / 클릭’), WheelEvent(‘UI / 스크롤 휠’), NavigationSubmitEvent, NavigationCancelEvent를 생성하는 방법을 설정할 수 있습니다.
UI 툴킷의 UI 문서와 uGUI 컴포넌트를 동시에 사용할 수 있습니다. UI 툴킷(및 uGUI)을 다른 입력 시스템과 함께 사용하는 경우, 적합한 이벤트 모듈을 선택해야 합니다.
다음 표는 각 입력 시스템 사용에 필요한 컴포넌트와 설정에 대한 설명입니다.
| 사용법 | 필수 컴포넌트 | 액티브 입력 처리 |
|---|---|---|
| 레거시 Input Manager가 있는 UI 툴킷 요소 | 기본 이벤트 시스템(Scene 컴포넌트 필요 없음) | Input Manager (기존) |
| Input System 패키지가 포함된 UI 툴킷 요소 | 기본 이벤트 시스템(Scene 컴포넌트 필요 없음) | Input System 패키지 (최신) 또는 둘 다 |
| 레거시 Input Manager가 있는 UI 툴킷 요소 및 uGUI 컴포넌트 | Standalone Input Module 및 EventSystem 컴포넌트 | Input Manager (기존) 또는 둘 다 |
| Input System 패키지가 있는 UI 툴킷 요소 및 uGUI 컴포넌트 | Input System UI Input Module 및 EventSystem 컴포넌트 | Input System 패키지 (최신) 또는 둘 다 |
씬에 첫 번째 uGUI 요소를 추가하면 EventSystem과 Standalone Input Module이 씬에 자동으로 추가됩니다.
EventSystem은 uGUI에 속합니다. 이는 교체 가능한 Input Module 컴포넌트를 통해 레거시 Input Manager 또는 Input System 패키지에서 파생된 uGUI 이벤트를 담당합니다.
Standalone Input Module은 UI 툴킷 요소에 이벤트를 전달합니다.
프로젝트에서 Input System 패키지를 활성화하면 Standalone Input Module 대신 Input System UI Input Module이 추가됩니다. Input System UI Input Module과 함께 제공되는 EventSystem은 UI 툴킷과 uGUI 요소의 이벤트를 올바르게 전달합니다.
EventSystem은 씬을 읽고 이벤트를 실행하고, Input System UI Input Module은 입력을 처리하고 이벤트 실행을 시작합니다. 다른 입력 모듈로 Standalone Input Module 또는 Input System UI Input Module을 변경할 수 있습니다. 이렇게 하면 사용되는 입력 유형이 변경될 수 있습니다. 어떤 입력 모듈이든 상관없이 모든 이벤트는 EventSystem을 통해 실행됩니다.
씬에 uGUI EventSystem을 추가하고 활성화하면 UI 툴킷이 이를 감지하여 각 UI 툴킷 패널에 두 개의 uGUI 컴포넌트인 PanelRaycaster 및 PanelEventHandler를 생성합니다. 이러한 컴포넌트는 uGUI 이벤트와 UI 툴킷 이벤트 간의 중개 역할을 합니다. 이러한 컴포넌트가 있으면 UI 툴킷의 자동화된 빌트인 입력 처리가 비활성화됩니다. 즉, UI 툴킷은 입력 이벤트가 존재할 때 이러한 컴포넌트를 사용하여 입력 이벤트를 처리합니다.
씬이 두 개 이상의 패널 설정 에셋을 사용하는 경우 이벤트 시스템은 정렬 순서에 따라 해당 패널에 포인터 이벤트를 전달합니다. UI 툴킷은 패널의 정렬 순서를 uGUI 캔버스 및 기타 유효한 레이캐스트 타겟의 정렬 순서와 비교하여 포인터 이벤트의 수신자를 결정합니다. 이 프로세스에 따라 UI 툴킷 요소, uGUI 오브젝트 또는 씬의 다른 오브젝트가 이벤트를 수신할지 결정됩니다. 마찬가지로 UI 툴킷은 EventSystem의 currentSelectedGameObject를 사용하여 포커스를 관리합니다. UI 툴킷 패널로 포커스를 가져오고 싶을 때 다른 uGUI 오브젝트에서 포커스를 제거하고, uGUI 오브젝트가 선택되면 UI 툴킷 패널이 자동으로 포커스를 잃습니다.
패널이 반응할 때까지 패널을 통해 포인터 이벤트가 전파됩니다. 이벤트를 사용하여 포커스가 맞춰진 요소에 영향을 주는 첫 번째 패널이 이벤트 시스템의 포커스를 받는 패널이 됩니다. 이 패널은 다른 이벤트가 다른 패널이 포커스를 받는 패널이 될 때까지 계속 키보드 이벤트를 수신합니다.
참고: 이벤트 전파를 중지하는 동작과 요소에 포커스를 부여하는 동작은 서로 다른 동작입니다. 예를 들어 버튼을 클릭하면 전파가 중지되고 버튼만 누름에 반응하도록 허용되지만, 버튼이나 클릭한 포커스 가능 요소와 같은 다른 기본 클릭 동작을 방지하지는 않습니다.