实现拖拽功能
新建脚本(为了能实现拖拽脚本我们要拖拽的是slot脚本)
使用新的命名空间,UntiyEngine.EventSystems
IBeginDragHandler,IDragHandler,IEndDragHandler
q:拖拽的过程中会被其他的格子挡住
d:在Untiy中因为渲染的顺序,为了不被挡住,我希望他跟它的父级脱离管理,并放在grid的位置上
logic:脱离完父子关系之后,我希望放到格子里,如果没有东西放进去,如果有东西和格子里的东西互换位置,为了让物品有交换我们要知道一开始的父级是什么
判断要到哪里去,我们使用鼠标使用射线的方法,添加canvas group组件,
鼠标当前的这个点向屏幕方向发射一条射线在最上级的这个层面会被我碰撞到然后返回一系列 信息 |blocks raycasts(射线)如果勾选这个选项我只能在点击的时候获得信息而在拖动的时候不能,所以我们在拖拽的过程中把这个功能关掉
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class ItemOnDrag : MonoBehaviour,IBeginDragHandler, IDragHandler, IEndDragHandler//还没有实现方法
{
public Transform originalParent;
public void OnBeginDrag(PointerEventData eventData)
{
originalParent = transform.parent;
transform.SetParent(transform.parent.parent);
transform.position = eventData.position;