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

相关推荐
fie888944 分钟前
基于C#的推箱子小游戏实现
开发语言·c#
.房东的猫1 小时前
ERP(金蝶云星空)开发【业务数据中心创建和注册】
c#
bugcome_com2 小时前
C# 进阶核心知识点汇总|多项目开发 + 委托 + Lambda + 事件一次吃透
c#
企鹅侠客2 小时前
鼠标键盘按键统计工具
计算机外设·键盘·鼠标
SunflowerCoder4 小时前
基于插件化 + Scriban 模板引擎的高效 HTTP 协议中心设计
http·c#
青云计划7 小时前
知光项目用户关系模块
c#·linq
m5655bj7 小时前
使用 C# 修改 PDF 页面尺寸
java·pdf·c#
专注VB编程开发20年7 小时前
c#模仿内置 Socket.Receive(无需 out/ref,直接写回数据)
开发语言·c#
小贺儿开发7 小时前
Unity3D 智慧城市管理平台
数据库·人工智能·unity·智慧城市·数据可视化
bugcome_com8 小时前
【零基础入门】C# 核心教程:从 HelloWorld 到入门精髓
c#