我们经常会使用拖拽UI的效果,untiy 为拖拽事件也提供了现成的API,我们只要简单的实现几个接口即可

我们用两种方式来实现拖拽代码,一种是使用MonoBehaviour里的方法,一种是实现UI事件接口,但不论是那种方法,拖拽的逻辑都是没有区别的。以下为拖拽核心代码

 //这是一个偏移量,如果没有这个偏移量,UI会直接吸附到鼠标的位置private Vector3 offset = new Vector3();//这是拖拽的代码transform.position = Input.mousePosition - offset;

实现一:使用MonoBehaviour
这要求我们需要为UI设置一个2D碰撞盒,鼠标只有在碰撞盒内拖动才会触发事件,需要注意UI的一个像素就是1米,所以碰撞盒需要做的非常大,例如一个长宽都是100的图片,碰撞盒的size 是100*100

代码如下

    private void OnMouseDown(){print("开始拖拽");//按下鼠标计算鼠标和自己轴心的偏移量offset = Input.mousePosition - transform.position;}private void OnMouseDrag(){print("鼠标拖拽");transform.position = Input.mousePosition - offset; //拖拽}private void OnMouseUp(){print("结束拖拽");}

实现二:使用接口
需要先引入UI事件命名空间

using UnityEngine.EventSystems;

需要注意,想让UI事件生效,场景里必须有EventSystem这个物体,如果你发现UI没有反应,可能是误删了EventSystem,可以在新建的UI里新建一个

实现接口及拖拽代码如下

public class DragPanel : MonoBehaviour,IPointerDownHandler,IPointerUpHandler,IDragHandler
{private Vector3 offset = new Vector3();public void OnPointerDown(PointerEventData eventData){print("开始拖拽");//按下鼠标计算鼠标和自己轴心的偏移量offset = Input.mousePosition - transform.position;}public void OnDrag(PointerEventData eventData){print("鼠标拖拽");transform.position = Input.mousePosition - offset; //拖拽}public void OnPointerUp(PointerEventData eventData){print("结束拖拽");}
}

开始拖拽和结束拖拽也可以使用 IBeginDragHandler,IEndDragHandler 这两个接口来实现

unity 拖拽UI相关推荐

  1. unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下

    代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine ...

  2. 可视化拖拽 UI 布局之拖拽篇

    前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...

  3. vue拖动改变模板_可视化拖拽 UI 布局之拖拽篇

    前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...

  4. UE拖拽UI生成Actor

    (1)在需要拖拽生成物体的UI中,覆写函数On Mouse Button Down,连接节点按下时侦测拖动,DragKey选择鼠标左键,然后连接返回节点:同时覆写函数On Drag Detected, ...

  5. Unity3D通过拖拽UI的四个角伸缩UI

    从今天开始写博客啦,把自己觉得有用的记录下来,供自己以后使用. 最近做项目遇到的一个需求,简单的实现了一下,大佬们有更好的方法恳请留言告诉我. 下图为UI的层级结构,Anchors下的四个物体为UI的 ...

  6. unity拖拽 到固定位置_Unity3D拖动任意对象GameObject移动到任意地方

    今天不是很忙,研究了一下拖拽GameObject移动到任意位置,沿x轴和z轴移动,其他的也就不说了,上代码:using UnityEngine; using System.Collections; p ...

  7. Unity 窗口制作 调整窗口大小 动态调整UI大小 窗口拖拽 UI拖拽

    Unity 简易窗口: 首先咱们看一下是不是自己想要的效果 组件可调整参数: 下面是同比例缩放的调整效果,如果只是缩放这个窗口里面的内容,这个是个不错的选择 资源链接: 下载地址.

  8. unity 原生UI 拖拽跟随鼠标移动

    unity 拖拽某个UI移动时有三个方法:,例如是image类型的UI,要想实现图片跟随着鼠标移动需要以下操作: 第一个方法:在Update函数中执行     if(Input.GetMouseBut ...

  9. 【嵌入式UI框架:LVGL】使用NXP GUI Guider 拖拽式设计LVGL

    LVGL是一个免费的开源嵌入式图形库,它提供创建嵌入式GUI所需的功能,具有易于使用的图形元素.精美的视觉效果和低内存占用.完整的图形框架包括供您在创建GUI时所用的各种小部件,并支持更高级的功能,例 ...

最新文章

  1. ubuntu下安装redis
  2. Node.js + Nginx-现在怎么办?
  3. java多线程--多线程基础小结
  4. 服务器给站点读写权限,IIS7目录权限设置的问题详解Windows服务器操作系统 -电脑资料...
  5. MySQL视图的使用
  6. maven到底是个啥玩意~
  7. 《深入理解Java虚拟机》读书笔记八
  8. mysql 5.7.17 x86_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
  9. slab 着色如何最大限度地利用 Cache Lines 或 Cache Rows?
  10. Android应用性能优化之优化列表头像过度绘制[一]
  11. iOS -- MBProgressHUB
  12. kubelet nodelost
  13. 地表温度反演LST 自存步骤
  14. 【HNOI模拟By lyp】Day2
  15. Docker专题(六)-Docker镜像详解
  16. Zabbix实现企业微信报警
  17. 微博博主侮辱女性 街猫koryili
  18. 用计算机写作文的好处,谈谈对电脑写作的意义,电脑写作与网络写作的含
  19. CC00053.CloudKubernetes——|KuberNetes二进制部署.V06|3台Server|——|etcd配置|
  20. 数据库专题——笛卡尔积

热门文章

  1. 各个银行信用卡对比,办哪个银行的信用卡比较好?
  2. 学习笔记006-列表
  3. Scrum那些事 - 什么是Scrum?
  4. 神经网络硬件加速器-架构篇
  5. STM32 PB2 使用注意
  6. C4D R2023 for mac安装包+安装教程
  7. 2015年全球大势预测
  8. html js 数量正则,js正则匹配多个全部数据问题
  9. 2020年苏州大学872真题整理【回忆版】
  10. elementUI 框架组件