之前在网上找了好多方法,总是不适合自己,要么就是不能用之类的,我用的是2017的版本,在这里"全面"解析一下.首先创建一个脚本InventoryItem挂在需要拖拽的Image上,这里的Image是另一个Image的子物体,因为子的Imget我用来显示物品的相应物品的图片,而父的Image我用来显示格子的图片,这样就有了格子里面的物品,可以用来拖动,而且,格子的标签我设为"InventoryItemGird",拖拽结束时就可以通过标签判断是不是格子.
1. 继承接口
u3d的ugui有相应的接口来方便我们实现拖拽功能,除了本来就需要继承的MonoBehaviour外,我们写的脚本再继承三个接口,还得先导入头文件 UnityEngine.EventSystems;
using UnityEngine.EventSystems;
public class InventoryItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
}
2. 实现抽象方法
抽象方法同样是三个
using UnityEngine.EventSystems;
public class InventoryItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
/// <summary>
/// 实现接口的OnBeginDrag方法,处理开始拖拽时要做的事情
/// </summary>
/// <param name="eventData"></param>
public void OnBeginDrag(PointerEventData eventData)
{
}
/// <summary>
/// 实现接口的OnDrag方法,处理拖动中要做的事情
/// </summary>
/// <param name="eventData"></param>
public void OnDrag(PointerEventData eventData)
{
}