unity拖拽,鼠标移动、离开

本文介绍了在Unity中使用EventSystem组件和接口IBeginDragHandler、IDragHandler、IEndDragHandler来实现物体的拖拽功能,以及通过IPointerEnterHandler和IPointerExitHandler接口实现鼠标进入和离开物体的响应。详细代码展示了如何在拖拽过程中防止物体穿透,并在拖拽结束后将物体放置到目标位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、拖拽
三个接口:(拖拽前,拖拽中,拖拽结束)
IBeginDragHandler, IDragHandler, IEndDragHandler
引用命名空间:using UnityEngine.EventSystems;
(下同)

 //防止射线穿透
 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、鼠标移动、离开
接口:IPointerEnterHandler、IPointerExitHandler

public void OnPointerEnter(PointerEventData eventData){}

public void OnPointerExit(PointerEventData eventData){}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值