前言
本文使用的是unity2021.3.18
本文旨在记录学习过程中遇到的问题,仅供参考
一、Canvas设置
创建一个Camera , 起名UICamera , 投射模式选择正交模式
Render Mode 选择 Screen Space - Camera , 将UICamera拖进去
二、UI拖拽
1.拖拽接口
使用Unity自带的接口 IBeginDragHandler, IDragHandler, IEndDragHandler
public class Test: MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
//开始拖拽
}
public void OnDrag(PointerEventData eventData)
{
//拖拽中
}
public void OnEndDrag(PointerEventData eventData)
{
//结束拖拽
}
}
2.鼠标点击位置转Canvas下坐标
鼠标位置为屏幕坐标系 , 拖拽的UI为Canvas坐标系 , 所以需要转换.
使用Unity提供的RectTransformUtility类可以实现屏幕坐标转换为Canvas下的本地坐标
//rect:被拖拽的物体的RectTransform
//rectTransform:想要将鼠标位置转换到Canvas下哪个物体的下面,即被拖拽的物体的父物体
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, Input.mousePosition, camera, out Vector2 pos))
{
rect.localPosition = pos;
}
三、结尾
欢迎指出问题,感谢阅读