Version: Unity 6.0 (6000.0)
언어 : 한국어
요소의 포커스 순서
매니퓰레이터

커스텀 컨트롤로 이벤트에 응답

커스텀 컨트롤을 구현하는 경우, 아래의 방법으로__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary
툴킷 이벤트에 응답할 수 있습니다.

이벤트에 대한 응답은 상황에 따라 달라집니다. 콜백과 가상 메서드 오버라이드의 차이점은 다음과 같습니다.

  • 콜백은 클래스의 인스턴스에 등록해야 합니다. 가상 메서드는 클래스 자체를 수정해야 합니다.
  • 가상 메서드 오버라이드는 전파 단계에서 콜백 레지스트리 룩업이 필요하지 않으므로 성능 측면에서 약간 유리합니다.

HandleEventBubbleUp 또는 HandleEventTrickleDown 가상 메서드 오버라이드

가상 메서드 오버라이드는 클래스의 모든 인스턴스에 적용됩니다. HandleEventBubbleUp 또는 HandleEventTrickleDown을 오버라이드하는 클래스의 경우 해당 인스턴스에 콜백을 등록할 수도 있습니다.

HandleEventBubbleUp 또는 HandleEventTrickleDown 메서드 또는 둘 다를 오버라이드하려면 VisualElement의 새로운 하위 클래스를 파생하십시오.

시각적 요소 서브 클래스의 각 인스턴스가 이벤트를 수신하면 해당 인스턴스에서 HandleEventBubbleUpHandleEventTrickleDown가 실행됩니다.

다음 예시는 이러한 가상 메서드를 커스터마이즈하는 방법을 보여 줍니다.

override void HandleEventBubbleUp(EventBase evt)
{
    // Call the base function.
    base.HandleEventBubbleUp(evt);

    if (evt.eventTypeId == PointerDownEvent.TypeId())
    {
        // ...
    }
    else if (evt.eventTypeId == MouseUpEvent.TypeId())
    {
        // ...
    }
    // More event types
}

특정 클래스 인스턴스에서 다음과 같은 경우에 커스텀 코드를 실행하면 동일한 결과가 발생합니다.

  • BubbleUp 단계에 대해 설정된 콜백
  • HandleEventBubbleUp 메서드 오버라이드

두 경우 모두 이벤트 전파를 중지하면 현재 타겟 콜백과 메서드 오버라이드를 실행한 후 이벤트에 대한 응답이 차단됩니다.

베스트 프랙티스

다음은 커스텀 컨트롤로 이벤트를 처리할 때 적용되는 베스트 프랙티스입니다.

동작 구현

일반적으로 요소에서 동작을 구현할 때는 HandleEventBubbleUp 메서드 오버라이드를 사용하십시오.

BubbleUp은 콜백의 기본 전파 단계이므로, 코드 실행 타이밍을 변경하지 않고도 콜백에서 HandleEventBubbleUp 메서드로 모든 코드를 이동할 수 있습니다.

동작을 메서드 오버라이드로 구현하면 다음과 같은 장점이 있습니다.

  • 메서드 오버라이드에는 콜백 레지스트리 룩업이 필요하지 않습니다.
  • 콜백이 없는 인스턴스는 전파 프로세스에 들어가지 않습니다.

이벤트 전파 중지

콜백 또는 가상 메서드 오버라이드 내에서 이벤트를 처리하는 경우, 이벤트에 대한 StopPropagation 메서드 중 하나를 호출하여 추가 이벤트 전파를 중지할 수 있습니다. 예를 들어 부모 패널은 트리클다운 단계에서 전파를 중지하여 자식이 이벤트를 수신하지 못하도록 할 수 있습니다.

이벤트 클래스 자체 내에서 EventBase.PreDispatch()EventBase.PostDispatch() 메서드의 실행을 방지할 수는 없습니다.

다음 메서드는 이벤트 전파에 영향을 미칩니다.

  • StopImmediatePropagation(): 이벤트 전파 프로세스를 즉시 중지하여 이벤트에 대해 어떤 후속 콜백도 실행되지 않도록 합니다.
  • StopPropagation(): 현재 요소에 대한 마지막 콜백 이후 이벤트 전파 프로세스를 중지합니다. 그러면 모든 콜백이 현재 요소에 대해 실행되며, 다른 요소들이 이벤트에 추가로 응답하는 것을 방지할 수 있습니다.

추가 리소스

요소의 포커스 순서
매니퓰레이터
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961