커스텀 컨트롤을 구현하는 경우, 아래의 방법으로__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary 툴킷 이벤트에 응답할 수 있습니다.
이벤트에 대한 응답은 상황에 따라 달라집니다. 콜백과 가상 메서드 오버라이드의 차이점은 다음과 같습니다.
가상 메서드 오버라이드는 클래스의 모든 인스턴스에 적용됩니다. HandleEventBubbleUp 또는 HandleEventTrickleDown을 오버라이드하는 클래스의 경우 해당 인스턴스에 콜백을 등록할 수도 있습니다.
HandleEventBubbleUp 또는 HandleEventTrickleDown 메서드 또는 둘 다를 오버라이드하려면 VisualElement의 새로운 하위 클래스를 파생하십시오.
시각적 요소 서브 클래스의 각 인스턴스가 이벤트를 수신하면 해당 인스턴스에서 HandleEventBubbleUp 및 HandleEventTrickleDown가 실행됩니다.
다음 예시는 이러한 가상 메서드를 커스터마이즈하는 방법을 보여 줍니다.
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
}
특정 클래스 인스턴스에서 다음과 같은 경우에 커스텀 코드를 실행하면 동일한 결과가 발생합니다.
두 경우 모두 이벤트 전파를 중지하면 현재 타겟 콜백과 메서드 오버라이드를 실행한 후 이벤트에 대한 응답이 차단됩니다.
다음은 커스텀 컨트롤로 이벤트를 처리할 때 적용되는 베스트 프랙티스입니다.
일반적으로 요소에서 동작을 구현할 때는 HandleEventBubbleUp 메서드 오버라이드를 사용하십시오.
BubbleUp은 콜백의 기본 전파 단계이므로, 코드 실행 타이밍을 변경하지 않고도 콜백에서 HandleEventBubbleUp 메서드로 모든 코드를 이동할 수 있습니다.
동작을 메서드 오버라이드로 구현하면 다음과 같은 장점이 있습니다.
콜백 또는 가상 메서드 오버라이드 내에서 이벤트를 처리하는 경우, 이벤트에 대한 StopPropagation 메서드 중 하나를 호출하여 추가 이벤트 전파를 중지할 수 있습니다. 예를 들어 부모 패널은 트리클다운 단계에서 전파를 중지하여 자식이 이벤트를 수신하지 못하도록 할 수 있습니다.
이벤트 클래스 자체 내에서 EventBase.PreDispatch() 및 EventBase.PostDispatch() 메서드의 실행을 방지할 수는 없습니다.
다음 메서드는 이벤트 전파에 영향을 미칩니다.
StopImmediatePropagation(): 이벤트 전파 프로세스를 즉시 중지하여 이벤트에 대해 어떤 후속 콜백도 실행되지 않도록 합니다.StopPropagation(): 현재 요소에 대한 마지막 콜백 이후 이벤트 전파 프로세스를 중지합니다. 그러면 모든 콜백이 현재 요소에 대해 실행되며, 다른 요소들이 이벤트에 추가로 응답하는 것을 방지할 수 있습니다.