欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    }
}

Unity 拖拽UI对象

 

Unity 拖拽UI对象

相关标签: Unity日常小结