ugui拖拽应用

来源:互联网 发布:sql 获取exec 返回值 编辑:程序博客网 时间:2024/04/29 15:31

添加EventTrigger组件


只要继承了IBeginDragHandler、IDragHandler、和IEndDragHandler这三个接口,实现了OnBeginDrag、OnDrag和OnEndDrag这三个方法,我们就可以实现拖拽功能。

其中,OnBeginDrag处理开始拖动时要做什么事,

OnDrag处理拖动过程中要做什么事,

OnEndDrag处理拖动结束时要做什么事


另外OnDrop方法中,需要监听的gameobject层级比被拖拽的层级高,即在hierarchy界面中的更下一层


实际使用中,仓库和背包两个界面都需要互相拖拽,用ondrop无法实现,于是换个思路,通过坐标计算,原先用于放置的物体只需要RectTransform属性即可

然后换算坐标,监测处于其中或是放置其中。


资料:

说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一种就是 UI 在Canvas内的坐标(暂时叫做ugui坐标。。。),这两个坐标是不一样的,所以拖拽是就需要转换。因为鼠标的移动是屏幕坐标,而 UI 的移动是ugui坐标。转换的方法:
RectTransformUtility.ScreenPointToLocalPointInRectangle


实际开发中用

--自定义方法,判断点是否在矩形中

UnityEngine.RectTransformUtility.RectangleContainsScreenPoint

原创粉丝点击