Вместо этого установите флаг 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
, чтобы разрешить обнаружение щелчка / зависания / и т.д. Для обнаружения щелчка / наведения / и т. Д. На объектах GameObject, не связанных с пользовательским интерфейсом, убедитесь, что к Camera
прикреплен PhysicsRaycaster
. (из IPointerClickHandler )
А потом вообще не используйте EventTrigger
.