UI 滑动面板的移动控制
通过拖拽的方式移动面板,在单个界面看到多个视图面板
需要导入UnityEngine.EventSystems; 事件命名空间
进而继承两个重要的接口IBeginDragHandler,IDragHandler,继承接口中的方法必须全部实现,直接右键转到定义,且方法必须为public。
/***
*
*
*
* 滑动面板的移动控制
*
*
*
*
*
*
*
*/
using System.Collections;
using UnityEngine.UI; //UI命名空间
using UnityEngine.EventSystems; //事件系统命名空间
using System.Collections.Generic;
using UnityEngine; public class SliderPanelMovingControl : MonoBehaviour,IBeginDragHandler,IDragHandler { public float FloSliderPanelSmoothPara = 5F; //滑动面板弹性系数
private float _FloStartPositionX; //开始的鼠标X的位置
private float _FloPosX; //鼠标移动的位置偏移量 // Use this for initialization
void Start () { } //开始拖拽
public void OnBeginDrag(PointerEventData eventData)
{
_FloStartPositionX = eventData.position.x;
} //拖拽中
public void OnDrag(PointerEventData eventData)
{
_FloPosX = eventData.position.x - _FloStartPositionX;
//移动面板,需要偏移量
this.transform.Translate(new Vector3(_FloPosX/, , ), Space.World);
} // Update is called once per frame
void Update () {
if (this.transform.localPosition.x > )
{
//移动范围受限处理(左边缘)
this.transform.localPosition = Vector3.Lerp(this.transform.localPosition, new Vector3(, , ), Time.deltaTime * FloSliderPanelSmoothPara);
} if (this.transform.localPosition.x < -)
{
//移动范围受限处理(右边缘)
this.transform.localPosition = Vector3.Lerp(this.transform.localPosition, new Vector3(-, , ), Time.deltaTime * FloSliderPanelSmoothPara);
} //整版“卡位”
if (this.transform.localPosition.x < && this.transform.localPosition.x>=-)
{
this.transform.localPosition = Vector3.Lerp(this.transform.localPosition, new Vector3(-, , ), Time.deltaTime * FloSliderPanelSmoothPara);
}
else if (this.transform.localPosition.x < - && this.transform.localPosition.x >= -)
{
this.transform.localPosition = Vector3.Lerp(this.transform.localPosition, new Vector3(-, , ), Time.deltaTime * FloSliderPanelSmoothPara);
}
else if (this.transform.localPosition.x < - && this.transform.localPosition.x >= -)
{
this.transform.localPosition = Vector3.Lerp(this.transform.localPosition, new Vector3(-, , ), Time.deltaTime * FloSliderPanelSmoothPara);
}
else if (this.transform.localPosition.x < - && this.transform.localPosition.x >= -)
{
this.transform.localPosition = Vector3.Lerp(this.transform.localPosition, new Vector3(-, , ), Time.deltaTime * FloSliderPanelSmoothPara);
}
}
}
之后对滑动面板进行完善:localPosition相对于父对象的位置,需要用到一个重要的函数Vector3.Lerp(),
这是一个差值处理函数,Lerp中有3个参数,(from,to,0-1之间的数),to参数是对位置的限制,相当于是摄像机跟随,很灵活。
UI 滑动面板的移动控制的更多相关文章
- 自学Aruba2.3-Aruba Web UI --Configuration面板介绍
点击返回:自学Aruba之路 自学Aruba2.3-Aruba Web UI --Configuration面板介绍 此文只展示重要面板,大部分通俗易懂就不过多语言介绍, 后期配置实例中再结合理论知识 ...
- 自学Aruba2.1-Aruba Web UI --Dashbord面板介绍
点击返回:自学Aruba之路 自学Aruba2.1-Aruba Web UI --Dashbord面板介绍 本文所有设计的的controller版本信息如下: Aruba7205 V6.4.4.16 ...
- 自学Aruba2.2-Aruba Web UI --Monitoring面板介绍
点击返回:自学Aruba之路 自学Aruba2.2-Aruba Web UI --Monitoring面板介绍 1. Monitoring面板-NETWORK Network Summary ...
- js进阶 13-7 如何实现滑动面板效果
js进阶 13-7 如何实现滑动面板效果 一.总结 一句话总结:就是普通的jquery动画中的滑动效果.$('#content').slideToggle().滑动效果的实质是通过调整高度. 1.滑动 ...
- jQuery基础(常用插件 表单验证,图片放大镜,自定义对象级,jQuery UI,面板折叠)
1.表单验证插件——validate 该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下: $(form).validate({o ...
- 初学java之面板布局的控制
/* * 联系网格的布控laytout *以一个棋盘为列子吧! */ import javax.swing.*; import java.awt.*; class WindGrid extends J ...
- jQuery Easy UI Panel(面板)组件
panel(面板)组件,跟前面的组件使用方法差点儿都差点儿相同,也是从设置一些面板属性.操作面板触发的事件.我们可针对面板对象的操作方法这三个点去学习. 后面有一些组件要依赖于这个组件. 另一点跟前面 ...
- 从电路到UI系列之一——常见显示控制接口的认识
引入 我之前有两方面的使用屏幕的案例.在做的模块上需要用到屏幕来显示的时候,全是SPI屏幕,并口屏幕和IIC屏幕.在研究了驱动(或者是绘图函数更加合适)之后,我发现其实他们就是直接写显存,这个显存在面 ...
- Jquery_效果-隐藏显示、淡入淡出、滑动面板、简单的动画队列
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
随机推荐
- TensorFlow总结
第一 基础 1. 定义变量 #定义维度为[2,3], 平均值为·1, 标准差为1,类型为float32,名称为w1的服从正态分布的变量 w1 = tf.Variable(tf.random_norma ...
- LODOP打印控件如何提示用户升级下载安装新版本
Lodop.C-Lodop在不断完善功能和更新中,新版本修复了很多问题,以及增加很多有利的功能,网站如何更新版本,提示用户下载新版本呢?更新版本很简单,只需要三步:1.替换提示安装部分的自己放置的路径 ...
- Supervisord管理进程实践
今天凑空研究了下Supervisord,这是一款linux进程管理工具,使用python开发,主要用于在后台维护进程(类似master守护进程),可以实现监控进程的状态.自动重启进程等操作,便于一些服 ...
- hdu-3294(最长回文子串)
题意:给你一个字符和一个字符串让你求出最长回文子串并且输出来,答案需要根据给出的字符转换一下,就是将给出的字符认定为a,然后依次向后推: 解题思路:manacher模板+一些处理 代码: #inclu ...
- Linux命令归纳
Linux基本命令 Linux Xshell远程连接 ssh 用户名@id地址 例如: ssh root@192.168.11.53 增加类指令 创建文件夹 mkdir 文件名 mkdir -p 路径 ...
- 进程间通讯:有名管道FIFO
接收端: #include <sys/stat.h> #include <sys/types.h> #include <stdio.h> #include < ...
- BZOJ3196二逼平衡树——线段树套平衡树(treap)
此为平衡树系列最后一道:二逼平衡树您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询 ...
- Codeforces Round #488 Div. 1
A:枚举每个点判断是否同时在两个正方形中即可. #include<iostream> #include<cstdio> #include<cmath> #inclu ...
- Codeforces Round #539 Div. 1
A:即求长度为偶数的异或和为0的区间个数,对前缀异或和用桶记录即可. #include<iostream> #include<cstdio> #include<cmath ...
- 洛谷P1781宇宙总统题解
题目 此题原本是一个简单的排序,但因为数据范围的限制,所以变成了一个需采用字符串排序的题目,接下来我将给大家讲一下如何字符串排序. 首先先判断为位数上是否相同,如果不同再比较那一位的数就可以了 #in ...