comment arrêter événement Glisser dans OnBeginDrag() dans l'unité de 4,6

J'ai un script qui gère les faisant glisser de l'un des éléments à partir de et vers un emplacement. Mais je veux ajouter une fonction pour arrêter de glisser de l'un des éléments spécifiques. je pense que le meilleur endroit pour le faire est dans le OnBeginDrag méthode, mais ne peut pas sembler trouver un moyen pour arrêter/annuler l'événement glisser lui-même, ici est un peu mon code

public class SlotBehaviour : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IDragHandler, IEndDragHandler,IPointerClickHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
if (eventData.button != PointerEventData.InputButton.Left)
{
return;
}
if (this.Empty) return;
var canvas = imageItem.canvas;
if (canvas == null) return;
GUIManager.mouseBusy = true;
//We have clicked something that can be dragged.
//What we want to do is create an icon for this.
m_DraggingIcon = new GameObject("icon");
m_DraggingIcon.transform.SetParent(canvas.transform, false);
m_DraggingIcon.transform.SetAsLastSibling();
var image = m_DraggingIcon.AddComponent<Image>();
//The icon will be under the cursor.
//We want it to be ignored by the event system.
m_DraggingIcon.AddComponent<IgnoreRaycast>();
image.sprite = imageItem.sprite;
image.rectTransform.sizeDelta = imageItem.rectTransform.sizeDelta;
m_DraggingPlane = transform as RectTransform;
SetDraggedPosition(eventData);
}
public void OnDrag(PointerEventData data)
{
if (m_DraggingIcon != null)
SetDraggedPosition(data);
}
private void SetDraggedPosition(PointerEventData data)
{
if (data.pointerEnter != null && data.pointerEnter.transform as RectTransform != null)
m_DraggingPlane = data.pointerEnter.transform as RectTransform;
var rt = m_DraggingIcon.GetComponent<RectTransform>();
Vector3 globalMousePos;
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(m_DraggingPlane, data.position, data.pressEventCamera, out globalMousePos))
{
rt.position = globalMousePos;
rt.rotation = m_DraggingPlane.rotation;
}
}
public void OnEndDrag(PointerEventData eventData)
{
if (m_DraggingIcon != null)
{
Destroy(m_DraggingIcon);
}
GUIManager.mouseBusy = false;
//if you drop it somewhere where its not wanted(or just nowhere)
if (eventData.used == false)
{
if (eventData.pointerCurrentRaycast.gameObject == null)//if its nowhere offer to drop it on ground
{
GUIManager.instance.DropItem((int)ItemsDatabase.container[containerID].items[indexInContainer]);
}
}
}
}

J'ai essayé de revenir à la méthode précédente, mais il ne marche pas faire quelque chose, probablement besoin de faire quelque chose avec les données d'événement...je serai reconnaissante si vous me dites comment traiter avec elle.

REMARQUE - voici une très complet, élégant, solution pour glisser/déposer profiter .. stackoverflow.com/a/37473953/294884

OriginalL'auteur Ivan Kuzev | 2015-01-28