unity拖动物体的方式有很多。 需要注意的是,物体的坐标属于世界坐标,鼠标的坐标属于屏幕坐标,所以需要吧鼠标的坐标信息转换成世界坐标。 不过unity更方便的方法 OnMouseDrag() 它相当于将上面的三个事件结合在一起。
Unity2D拖动物体笔记
最简单就是检测鼠标的经过,按下和抬起。当鼠标按下时,使得物体跟随着鼠标,也就是两者的位置信息保持一致。private bool isOver = false; private void Update() { if (isOver) { Vector2 Pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);//转换成世界坐标 transform.position = new Vector2(Pos.x, Pos.y); } } private void OnMouseOver() { if (Input.GetMouseButtonDown(0)) { isOver = true; } if (Input.GetMouseButtonUp(0)) { isOver = false; }
同时设置一个鼠标处于物体上方时,放大物体的方法。做出选择的特效。
使用接口实现UI物体的拖动到格子里。
public class DraagByInterface : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler { [SerializeField] private Canvas canvas; private RectTransform rectTrans; private CanvasGroup canvasGroup; private void Start() { rectTrans = GetComponent<RectTransform>(); canvasGroup = GetComponent<CanvasGroup>(); } public void OnBeginDrag(PointerEventData eventData) { canvasGroup.blocksRaycasts = false;//使得物体处于格子的上方时,格子能检测到鼠标。 canvasGroup.alpha = 0.35f; } public void OnDrag(PointerEventData eventData) { rectTrans.anchoredPosition += eventData.delta/canvas.scaleFactor;//利用ui的锚点跟随鼠标移动 } public void OnEndDrag(PointerEventData eventData) { canvasGroup.blocksRaycasts = true; canvasGroup.alpha = 1f; } }
当场景中有多个选框时,通过改变选框的层级,做到当该选框被点击时,显示在最上层。public void OnPointerDown(PointerEventData eventData)//需要IPointerDownHandler接口 { panelRectTrans.SetAsLastSibling(); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算