我有一个附加到Image的5 EventTrigger。有
“开始拖动”,“拖动”,“结束拖动”,“指针输入”。 “指针出口”
喜欢这张图片
我可以使用
eventTrigger.enabled = false;
但是我想要实现的只是禁用“开始拖动”事件。
有人知道怎么做吗?
答案 0 :(得分:2)
改为在UIDragableScript
中放置一个标志。
public bool allowBeginDrag;
设置布尔值。
indicatorWidgetObject.GetComponent<UIDragableScript>().allowBeginDrag = false;
然后,使UIdragableScript.BeginDrag
依赖于它。
UIdragableScript.BeginDrag()
{
if(!allowBeginDrag) return;
// ...
}
您可能要考虑使用IDragXHandler
和IPointerXHandler
接口而不是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
。