Unity 鼠标点击或触摸任意拖动UGUI的方法

在Unity中,如果要通过鼠标拖到UI组件或者触摸移动UI组件,可以使用EventSystems下的方法。

具体实现如下:

新建一个脚本,DragController.cs:

c# 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class DragController : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{
    private RectTransform tran;
    private Vector2 pointerOffset;

    private void Awake()
    {
        tran = GetComponent<RectTransform>();
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        // 计算触摸点与拖动对象的偏移量
        pointerOffset = eventData.position - (Vector2)tran.position;
    }

    public void OnDrag(PointerEventData eventData)
    {
        // 更新拖动对象的位置
        tran.position = eventData.position - pointerOffset;
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        // 重置偏移量
        pointerOffset = Vector2.zero;
    }
}

然后把该脚本拉到UI组件中,运行后我们可以通过鼠标拖到UI组件,在触摸屏上,我们也可以通过触摸UI组件拖动。

效果如:

Unity 鼠标点击或触摸任意拖动UGUI的方法

相关推荐
在路上看风景23 分钟前
31. Unity 异步加载的底层细节
unity
UI设计兰亭妙微36 分钟前
中车株州所显示器界面设计
计算机外设·界面设计
wxin_VXbishe41 分钟前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
墩墩冰2 小时前
计算机图形学 多视区的显示
计算机外设
天人合一peng2 小时前
Unity中做表头时像work中整个调整宽窄
unity
墩墩冰2 小时前
计算机图形学 GLU库中的二次曲面函数
计算机外设
墩墩冰3 小时前
计算机图形学 利用鼠标实现橡皮筋技术
计算机外设
bugcome_com12 小时前
零基础入门C#:一篇搞懂核心知识点
c#
小李也疯狂14 小时前
Unity 中的立方体贴图(Cubemaps)
unity·游戏引擎·贴图·cubemap
牛掰是怎么形成的14 小时前
Unity材质贴图引用陷阱:包体暴涨真相
unity·材质·贴图