Unity3D笔记(一)简单背包系统NGUI下拖动物品

public class Bag :  EventTrigger{

//物品最开始的父物体

public Transform nowParent;

//物品拖拽中的父物体

private Transform dragParent;

public string[] tags = new string[] { "bag", "goods" };

private void Start()

{

//    dragParent = GameObject.Find("DragParent").transform;

string item="qqq";

string mString= Array.Find(tags, p => p == item);

print(mString);

}

public override void OnPointerClick(PointerEventData eventData)

{

//射线碰撞点的信息

print(eventData.pointerCurrentRaycast);

}//当前物体的位置跟随鼠标进行移动

transform.position = Input.mousePosition;

//拖拽中将物体的射击检测关闭 以便结束拖拽的时候可以去检测物体下方的物体

public override void OnBeginDrag(PointerEventData eventData)

{

nowParent = transform.parent;

}

public override void OnDrag(PointerEventData eventData)

{

//当前物体的位置跟随鼠标进行移动

transform.position = Input.mousePosition;

//拖拽中将物体的射击检测关闭 以便结束拖拽的时候可以去检测物体下方的物体

GetComponent<Image>().raycastTarget = false;

//将拖拽中的物体父物体改为深度值较高的空物体,以便我们在拖拽中可以看到他

transform.SetParent(dragParent);

}

public override void OnEndDrag(PointerEventData eventData)

{

GameObject go = eventData.pointerCurrentRaycast.gameObject;

//如果是别的UI或者go为空 让拖拽的物品回归原位

//go.tag!="bag"||go.tag!="goods"

if (go == null || Array.Find(tags, p => p == go.tag)==null)

{

transform.position = nowParent.position;

transform.SetParent(nowParent);

GetComponent<Image>().raycastTarget = true;

return;

}

//如果是格子 将拖拽的物品放到格子的位置,并且和格子成为父子物体的关系

if (go.tag == "bag")

{

transform.position = go.transform.position;

transform.SetParent(go.transform);

}

else if (go.tag == "goods")

{

//如果是格子当中有物品,那么交换两个物品位置

//将拖拽的物体放到当前格子中

transform.position = go.transform.parent.position;

transform.SetParent(go.transform.parent);

//将现在格子当中的物体移动到当前拖拽物体原来的位置

go.transform.position = nowParent.position;

go.transform.SetParent(nowParent);

}

transform.GetComponent<Image>().raycastTarget = true;

}

public void SetPosAndParent(Transform child, Transform parent)

{

child.position = parent.position;

child.SetParent(parent);

}

public void IsRayCastOn(bool flag)

{

GetComponent<Image>().raycastTarget = flag;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容