using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class DrawPicture : MonoBehaviour,IDragHandler,IPointerDownHandler
{
RectTransform parentRTF;
Vector3 offset;//偏移量
private void Start()
{
parentRTF = transform.parent as RectTransform;//获取父物体的RTF(ScreenPointToWorldPointInRectangle-->将屏幕空间上的点转换为位于给定RectTransform平面上的世界空间中的位置)
}
public void OnDrag(PointerEventData eventData)
{
//直接用this.transform.position = eventData.position;(eventdata.position是屏幕坐标)有问题,仅适用于overlay,而且有bug
Vector3 worldPos;
RectTransformUtility.ScreenPointToWorldPointInRectangle(parentRTF,eventData.position,eventData.pressEventCamera,out worldPos);
transform.position = worldPos+offset;
}
public void OnPointerDown(PointerEventData eventData)
{
//记录刚按下时的位置
Vector3 startPos;
RectTransformUtility.ScreenPointToWorldPointInRectangle(parentRTF, eventData.position, eventData.pressEventCamera, out startPos);
offset = transform.position - startPos;
}
}
Unity中UGUI中的图片拖拽问题
最新推荐文章于 2024-04-12 10:26:21 发布