Unity 拖拽UI对象
程序员文章站
2024-02-29 12:31:40
...
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class DragUI : MonoBehaviour,IPointerDownHandler,IPointerUpHandler {
public Canvas canvas;
private bool isDrag;
//鼠标点击那一刻
//鼠标点击左右中键都会执行下面的OnPointerDown方法
public void OnPointerDown(PointerEventData eventData)
{
//如果只想限制鼠标左键,或其他
//表示是鼠标左键点击的
if (eventData.button == PointerEventData.InputButton.Left)
{
isDrag = true;
}
}
//鼠标抬起那一刻
public void OnPointerUp(PointerEventData eventData)
{
isDrag = false;
}
private void Update()
{
if (isDrag)
{
//按下鼠标左键,我们就要让物品跟随鼠标
Vector2 position;
//把鼠标点击在屏幕上的点的位置(Input.mousePosition)转换为在UGUI(Canvas)上的位置(out position)
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
Input.mousePosition,
null,
out position);
//将转换后的position设置为UI的位置(二维向量赋值给三维向量。Z轴默认为0)
SetLocalPosition(position);
}
}
public void SetLocalPosition(Vector3 position)
{
transform.localPosition = position;
}
}