unity 拖拽UI
我们经常会使用拖拽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相关推荐
- unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下
代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine ...
- 可视化拖拽 UI 布局之拖拽篇
前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...
- vue拖动改变模板_可视化拖拽 UI 布局之拖拽篇
前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...
- UE拖拽UI生成Actor
(1)在需要拖拽生成物体的UI中,覆写函数On Mouse Button Down,连接节点按下时侦测拖动,DragKey选择鼠标左键,然后连接返回节点:同时覆写函数On Drag Detected, ...
- Unity3D通过拖拽UI的四个角伸缩UI
从今天开始写博客啦,把自己觉得有用的记录下来,供自己以后使用. 最近做项目遇到的一个需求,简单的实现了一下,大佬们有更好的方法恳请留言告诉我. 下图为UI的层级结构,Anchors下的四个物体为UI的 ...
- unity拖拽 到固定位置_Unity3D拖动任意对象GameObject移动到任意地方
今天不是很忙,研究了一下拖拽GameObject移动到任意位置,沿x轴和z轴移动,其他的也就不说了,上代码:using UnityEngine; using System.Collections; p ...
- Unity 窗口制作 调整窗口大小 动态调整UI大小 窗口拖拽 UI拖拽
Unity 简易窗口: 首先咱们看一下是不是自己想要的效果 组件可调整参数: 下面是同比例缩放的调整效果,如果只是缩放这个窗口里面的内容,这个是个不错的选择 资源链接: 下载地址.
- unity 原生UI 拖拽跟随鼠标移动
unity 拖拽某个UI移动时有三个方法:,例如是image类型的UI,要想实现图片跟随着鼠标移动需要以下操作: 第一个方法:在Update函数中执行 if(Input.GetMouseBut ...
- 【嵌入式UI框架:LVGL】使用NXP GUI Guider 拖拽式设计LVGL
LVGL是一个免费的开源嵌入式图形库,它提供创建嵌入式GUI所需的功能,具有易于使用的图形元素.精美的视觉效果和低内存占用.完整的图形框架包括供您在创建GUI时所用的各种小部件,并支持更高级的功能,例 ...
最新文章
- ubuntu下安装redis
- Node.js + Nginx-现在怎么办?
- java多线程--多线程基础小结
- 服务器给站点读写权限,IIS7目录权限设置的问题详解Windows服务器操作系统 -电脑资料...
- MySQL视图的使用
- maven到底是个啥玩意~
- 《深入理解Java虚拟机》读书笔记八
- mysql 5.7.17 x86_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
- slab 着色如何最大限度地利用 Cache Lines 或 Cache Rows?
- Android应用性能优化之优化列表头像过度绘制[一]
- iOS -- MBProgressHUB
- kubelet nodelost
- 地表温度反演LST 自存步骤
- 【HNOI模拟By lyp】Day2
- Docker专题(六)-Docker镜像详解
- Zabbix实现企业微信报警
- 微博博主侮辱女性 街猫koryili
- 用计算机写作文的好处,谈谈对电脑写作的意义,电脑写作与网络写作的含
- CC00053.CloudKubernetes——|KuberNetes二进制部署.V06|3台Server|——|etcd配置|
- 数据库专题——笛卡尔积