首页 > 代码库 > unity 鼠标拖带
unity 鼠标拖带
组场景时,经常需要获取鼠标(或者点击)开始结束时讯息(包括开始拖动时的事件以及对应的坐标),unity为我们提供了两个接口来实现相关方法之前在Unity基础命令中也提到过。
在此在重申一下,两个接口对应两个方法,即可以对应开始结束拖动时的事件,数据则为eventData中。
public void OnBeginDrag(PointerEventData eventData)
public void OnEndDrag(PointerEventData eventData)
public class NewMove : MonoBehaviour,IBeginDragHandler,IEndDragHandler { private ScrollRect scrollRect; public Toggle[] toggleArr; //存储特定的位置坐标 private float[] pageArr=new float[]{0,0.5f,1.0f}; public void OnBeginDrag(PointerEventData eventData) { // Debug.Log("Begin:"); // Debug.Log(eventData.position); //获取rect的初始坐标值 Vector2 pos = scrollRect.normalizedPosition; Debug.Log("Begin:"+pos); } public void OnEndDrag(PointerEventData eventData) { //Debug.Log("End:"); //Debug.Log(eventData.position); //获取rect的拖动后的坐标值 Vector2 pos = scrollRect.normalizedPosition; Debug.Log("End:"+pos); //获取rect拖动后的水平坐标值 float posX = scrollRect.horizontalNormalizedPosition; int index = 0; //计算与特定点的偏差 float offset = Math.Abs(pageArr[index] - posX); //与每一个坐标点进行比较,确定应该存在的位置 //偏差最小的位置即为rect的位置点 for(int i=0;i<pageArr.Length;i++) { float newOffset = Math.Abs(pageArr[i] - posX); if(newOffset<= offset) { index = i; offset = newOffset; } } scrollRect.horizontalNormalizedPosition = pageArr[index]; toggleArr[index].isOn = true; Debug.Log("End:" + scrollRect.horizontalNormalizedPosition); }
unity 鼠标拖带
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。