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的方法

相关推荐
该用户已不存在15 小时前
不止是初始化,4个C# 构造函数解析与实例
后端·c#·.net
归真仙人18 小时前
【UE】UMG安卓相关问题
android·ue5·游戏引擎·ue4·虚幻·unreal engine
无风听海18 小时前
深入讲解 C# 中 string 如何支持 CultureInfo
开发语言·c#
wzfj1234519 小时前
FreeRTOS xTaskCreateStatic 详解
开发语言·c#
kylezhao201919 小时前
C# DataGridView 控件使用详解
c#
一个帅气昵称啊19 小时前
C# 14 中的新增功能
开发语言·c#
阿蒙Amon19 小时前
C#每日面试题-简述C#构造函数和析构函数
java·开发语言·c#
BuHuaX19 小时前
Unity项目怎么接入抖音小游戏?
unity·c#·游戏引擎·wasm·游戏策划
EQUINOX120 小时前
CSharp算法竞赛环境配置与模板使用
c#·算法竞赛
夜流冰20 小时前
VSCode - 插件: 高亮显示选中的目标
ide·vscode·c#