using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class TuoZhuai : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
Vector3 originPos;
Vector3 setoff;//鼠标点击的位置和图片中心点的距离
Transform canvas;//画布
Transform originParent;//
CanvasGroup canvasGroup;
Transform trans;
void Start()
{
canvas = GameObject.Find("KnapsackUI").transform;//获取画布
canvasGroup = GetComponent<CanvasGroup>();//
}
public void OnBeginDrag(PointerEventData eventData)
{
originParent = transform.parent;//记录父物体
transform.SetParent(canvas);
originPos = transform.position;
setoff = Input.mousePosition - originPos;//鼠标与图片中心点的距离
canvasGroup.blocksRaycasts = false;//不让拖拽物体遮挡射线
}
public void OnDrag(PointerEventData eventData)
{
transform.position = Input.mousePosition - setoff;//拖拽中相差位置不变
}
public void OnEndDrag(PointerEventData eventData)
{
if (eventData.pointerEnter == null)//如果点击位置为空
{
Dictionary_Bag.DeleteItem(this.name);
Destroy(this .gameObject );
return;
}
else
{
trans = eventData.pointerEnter.transform;//记录点击时的格子对象
print(trans.name);
}
print("放开时格子的名字"+trans.name);
switch (trans.tag)
{
case "BagGrid"://武器
string spriteName= transform.GetComponent<Image>().sprite.name;
if (BagDemo_2.Bag.ContainsKey(spriteName) && BagDemo_2.Bag[spriteName].ID == 0 )
{
if (eventData.pointerEnter.transform.childCount != 0)
{
Transform temp2;
temp2 = transform.parent;//记录当前的父对象
transform.SetParent(trans.parent);
trans.parent = originParent;
trans.localPosition = Vector3.zero;
}
else
{
transform.SetParent(trans);
}
}else
{
transform.position = originPos;//当前位置返回初始位置
transform.SetParent(originParent);//父物体返回
canvasGroup.blocksRaycasts = true;//开始阻挡射线
}
break;
case "GridPanel"://格子空白处
transform.position = originPos;//当前位置返回初始位置
transform.SetParent(originParent);//父物体返回
canvasGroup.blocksRaycasts = true;//开始阻挡射线
break;
case "Grid"://格子
transform.SetParent(trans);
break;
case "Item"://图片
Transform temp;
temp = transform.parent;//记录当前的父对象
transform.SetParent(trans.parent );
trans.parent = originParent;
trans.localPosition = Vector3.zero;
break;
default:
transform.SetParent(originParent);//返回到初始父对象
break;
}
print("放开时检测到格子的tag---"+trans.tag);
transform.localPosition = Vector3.zero;//初始化图片坐标
canvasGroup.blocksRaycasts = true;//开始遮挡射线
}
}
/**********************************简易版背包******************************************/
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.EventSystems;
public class TuoZhuai : MonoBehaviour,IBeginDragHandler,IDragHandler,IEndDragHandler{
CanvasGroup thisGroup;//阻挡射线组件
Transform parentTransform;//开始拖拽时的父物体位置
Vector3 point;//距离差
Transform canvas;//画布
Transform endTransformobj;//拖拽结束时的物体的位置
//Transform temp;//暂时存储位置
void Start()
{
canvas = GameObject.Find("Panel").transform;
thisGroup = GetComponent<CanvasGroup>();
}
public void OnBeginDrag(PointerEventData eventData)
{
parentTransform= this.transform.parent;//记录父物体
point = Input.mousePosition - this.transform.position;//记录鼠标与图片之间的间距
this.transform.SetParent(canvas);//修改图片父物体
thisGroup.blocksRaycasts = false;//图片不再阻挡射线
}
public void OnDrag(PointerEventData eventData)
{
this.transform.position = Input.mousePosition - point;//让图片和鼠标之间保持一定间距
}
public void OnEndDrag(PointerEventData eventData)
{
//如果不是格子也不是武器 就删除
if(eventData .pointerEnter.transform .tag !="item"&& eventData.pointerEnter.transform.tag != "grid")
{
Destroy(this.gameObject);
}else
{
endTransformobj = eventData.pointerEnter.transform;// *获取射线击中的物体对象
switch (endTransformobj.tag )
{
case "item":
transform.SetParent(endTransformobj.parent);//修改他的父对象
thisGroup.blocksRaycasts = true;//开始阻挡射线
endTransformobj .SetParent ( parentTransform);//修改被交换的对象的父物体
endTransformobj.localPosition = Vector3.zero;//初始化位置
break;
case "grid":
transform.SetParent(endTransformobj);//将自身父物体修改为检测到的格子
thisGroup.blocksRaycasts = true;//开始阻挡射线
break;
}
transform.localPosition = Vector3.zero;//初始化位置
}
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class TuoZhuai : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
Vector3 originPos;
Vector3 setoff;//鼠标点击的位置和图片中心点的距离
Transform canvas;//画布
Transform originParent;//
CanvasGroup canvasGroup;
Transform trans;
void Start()
{
canvas = GameObject.Find("KnapsackUI").transform;//获取画布
canvasGroup = GetComponent<CanvasGroup>();//
}
public void OnBeginDrag(PointerEventData eventData)
{
originParent = transform.parent;//记录父物体
transform.SetParent(canvas);
originPos = transform.position;
setoff = Input.mousePosition - originPos;//鼠标与图片中心点的距离
canvasGroup.blocksRaycasts = false;//不让拖拽物体遮挡射线
}
public void OnDrag(PointerEventData eventData)
{
transform.position = Input.mousePosition - setoff;//拖拽中相差位置不变
}
public void OnEndDrag(PointerEventData eventData)
{
if (eventData.pointerEnter == null)//如果点击位置为空
{
Dictionary_Bag.DeleteItem(this.name);
Destroy(this .gameObject );
return;
}
else
{
trans = eventData.pointerEnter.transform;//记录点击时的格子对象
print(trans.name);
}
print("放开时格子的名字"+trans.name);
switch (trans.tag)
{
case "BagGrid"://武器
string spriteName= transform.GetComponent<Image>().sprite.name;
if (BagDemo_2.Bag.ContainsKey(spriteName) && BagDemo_2.Bag[spriteName].ID == 0 )
{
if (eventData.pointerEnter.transform.childCount != 0)
{
Transform temp2;
temp2 = transform.parent;//记录当前的父对象
transform.SetParent(trans.parent);
trans.parent = originParent;
trans.localPosition = Vector3.zero;
}
else
{
transform.SetParent(trans);
}
}else
{
transform.position = originPos;//当前位置返回初始位置
transform.SetParent(originParent);//父物体返回
canvasGroup.blocksRaycasts = true;//开始阻挡射线
}
break;
case "GridPanel"://格子空白处
transform.position = originPos;//当前位置返回初始位置
transform.SetParent(originParent);//父物体返回
canvasGroup.blocksRaycasts = true;//开始阻挡射线
break;
case "Grid"://格子
transform.SetParent(trans);
break;
case "Item"://图片
Transform temp;
temp = transform.parent;//记录当前的父对象
transform.SetParent(trans.parent );
trans.parent = originParent;
trans.localPosition = Vector3.zero;
break;
default:
transform.SetParent(originParent);//返回到初始父对象
break;
}
print("放开时检测到格子的tag---"+trans.tag);
transform.localPosition = Vector3.zero;//初始化图片坐标
canvasGroup.blocksRaycasts = true;//开始遮挡射线
}
}
/**********************************简易版背包******************************************/
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.EventSystems;
public class TuoZhuai : MonoBehaviour,IBeginDragHandler,IDragHandler,IEndDragHandler{
CanvasGroup thisGroup;//阻挡射线组件
Transform parentTransform;//开始拖拽时的父物体位置
Vector3 point;//距离差
Transform canvas;//画布
Transform endTransformobj;//拖拽结束时的物体的位置
//Transform temp;//暂时存储位置
void Start()
{
canvas = GameObject.Find("Panel").transform;
thisGroup = GetComponent<CanvasGroup>();
}
public void OnBeginDrag(PointerEventData eventData)
{
parentTransform= this.transform.parent;//记录父物体
point = Input.mousePosition - this.transform.position;//记录鼠标与图片之间的间距
this.transform.SetParent(canvas);//修改图片父物体
thisGroup.blocksRaycasts = false;//图片不再阻挡射线
}
public void OnDrag(PointerEventData eventData)
{
this.transform.position = Input.mousePosition - point;//让图片和鼠标之间保持一定间距
}
public void OnEndDrag(PointerEventData eventData)
{
//如果不是格子也不是武器 就删除
if(eventData .pointerEnter.transform .tag !="item"&& eventData.pointerEnter.transform.tag != "grid")
{
Destroy(this.gameObject);
}else
{
endTransformobj = eventData.pointerEnter.transform;// *获取射线击中的物体对象
switch (endTransformobj.tag )
{
case "item":
transform.SetParent(endTransformobj.parent);//修改他的父对象
thisGroup.blocksRaycasts = true;//开始阻挡射线
endTransformobj .SetParent ( parentTransform);//修改被交换的对象的父物体
endTransformobj.localPosition = Vector3.zero;//初始化位置
break;
case "grid":
transform.SetParent(endTransformobj);//将自身父物体修改为检测到的格子
thisGroup.blocksRaycasts = true;//开始阻挡射线
break;
}
transform.localPosition = Vector3.zero;//初始化位置
}
}
}