需要实现拖动技能卡片,填充到选定的空格中,实现技能卡的交换。
在此操作中需要:
1这个层级,第一级Canvas,第二级panel ,第三级panel,第四级Image,第五级Image,
2 技能卡片是两个image,父级tag是GridCell,子级tag是Goods,子级添加Canvas Groups.鼠标检测下面的控件。
3当Blocks Raycasts为false时,射线能够穿透检测到鼠标下面的控件。
//命名空间
using UnityEngine.EventSystems;
//接口
public class Backpaglianxi : MonoBehaviour,IBeginDragHandler,IDragHandler,IEndDragHandler
{
public void OnEndDrag (PointerEventData eventData)
{
m_Canvas.blocksRaycasts = true;
Transform temp = eventData.pointerEnter.transform;
switch (eventData.pointerEnter.tag) {
case"GridCell":
transform.SetParent (temp);
transform.position = temp.position;
break;
case"Goods":
transform.SetParent (temp.parent);
transform.position = temp.parent.position;
temp.SetParent (m_StartParent);
temp.position = m_StartParent.position;
break;
default:
print ("22222222");
//注意这个最后一定要回到原来的关系
transform.SetParent (m_StartParent);
transform.position = m_StartParent.position;
break;
}
}
public void OnDrag (PointerEventData eventData)
{
transform.position = Input.mousePosition;
transform.SetParent (transform.root);
}
Transform m_StartParent;
CanvasGroup m_Canvas;
public void OnBeginDrag (PointerEventData eventData)
{
print ("dsdfds");
m_StartParent = transform.parent;
m_Canvas.blocksRaycasts = false;
}
void Awake ()
{
print ("dsfsdf");
m_Canvas = GetComponent <CanvasGroup> ();
}
}
主要是父级和子级之间的关系,拖动时,拖动中,拖动结束时。