Unity drag, mouse move, leave

1. Drag and drop
Three interfaces: (before dragging, during dragging, and end of dragging)
IBeginDragHandler, IDragHandler, IEndDragHandler
reference namespace: using UnityEngine.EventSystems;
(the same below)

 //防止射线穿透
 CanvasGroup cg;
 void Start()
  {
    
    
   cg = transform.GetComponent<CanvasGroup>();
  }
 //拖拽前
 public void OnBeginDrag(PointerEventData eventData)
  {
    
    
  //防止穿透(防止拖拽的物体穿透在里面而被遮住)
   cg.blocksRaycasts = false;
  }
  //拖拽时
 public void OnDrag(PointerEventData eventData)
  {
    
    
  //拖拽物体跟随鼠标移动而移动
   transform.position = Input.mousePosition;
  }
  //拖拽结束
  public void OnEndDrag(PointerEventData eventData)
  {
    
    
   //触碰对象
   GameObject go = eventData.pointerEnter;
   //GameObject go = eventData.pointerCurrentRaycast.gameObject;//触碰对象
   //如果放进空的背包格子里
   //就设置子父级
   transform.SetParent(go.transform);
   //然后居中位置
   transform.localPosition = Vector3.zero;
  }

2. Mouse move, leave
interface: IPointerEnterHandler, IPointerExitHandler

public void OnPointerEnter(PointerEventData eventData){
    
    }

public void OnPointerExit(PointerEventData eventData){
    
    }

Guess you like

Origin blog.csdn.net/weixin_44706943/article/details/126850234