如何统一禁用/启用特定的EventTrigger

时间:2019-01-15 10:42:30

标签: c# unity3d

我有一个附加到Image的5 EventTrigger。有
“开始拖动”,“拖动”,“结束拖动”,“指针输入”。 “指针出口”

喜欢这张图片

enter image description here



我可以使用

一次禁用所有这些功能
eventTrigger.enabled = false;

但是我想要实现的只是禁用“开始拖动”事件。
有人知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

改为在UIDragableScript中放置一个标志。

public bool allowBeginDrag; 

设置布尔值。

indicatorWidgetObject.GetComponent<UIDragableScript>().allowBeginDrag = false;

然后,使UIdragableScript.BeginDrag依赖于它。

UIdragableScript.BeginDrag()
{
    if(!allowBeginDrag) return;

    // ...
}

您可能要考虑使用IDragXHandlerIPointerXHandler接口而不是EventTrigger来将逻辑实现到脚本本身中:

UIDragableScript

public class UIDragableScript : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public bool allowBeginDrag;

    public void OnBeginDrag(PointerEventData eventData)
    {
        if(!allowBeginDrag) return;

        // ...
    }

    public void OnDrag(PointerEventData eventData)
    {
        // ...
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        // ...
    }
}

UIHoverScript

public class UIHoverScript : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public void OnPointerEnter(PointerEventData pointerEventData)
    {
        // ...
    }

    //Detect when Cursor leaves the GameObject
    public void OnPointerExit(PointerEventData pointerEventData)
    {
        // ...
    }
}
  

确保场景中存在EventSystem,以允许单击/悬停/等检测。对于非UI GameObject上的单击/悬停/等检测,请确保将PhysicsRaycaster附加到Camera上。 (来自IPointerClickHandler

然后,根本不要使用EventTrigger