(转载)【UGUI】侧面滑出的菜单栏,宽度自适应
首先看下项目效果
实现效果
发现实现效果并不难,利用动画(iTween)+UGUI 有一个长按的判断处理即可
附上项目和代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UICont : MonoBehaviour {
public RectTransform mainUI;
public Button showHideBtn;
public RepeatButton dragBtn;
private bool m_isShow = true;
// public RectTransform
// Use this for initialization
void Start () {
dragBtn.onPress.AddListener(DragBtn);
showHideBtn.onClick.AddListener(ShowHide);
}
void ShowHide() {
Vector3 vec3Tmp = mainUI.position;
if(m_isShow) {
vec3Tmp.x = -mainUI.sizeDelta.x;
iTween.MoveTo(mainUI.gameObject, vec3Tmp, 1f);
m_isShow = false;
} else {
vec3Tmp.x = 0;
iTween.MoveTo(mainUI.gameObject, vec3Tmp, 1f);
m_isShow = true;
}
}
void DragBtn() {
Vector2 vec2Tmp = mainUI.sizeDelta;
vec2Tmp.x = Mathf.Clamp(Input.mousePosition.x, 100, 500);
mainUI.sizeDelta = vec2Tmp;
}
// Update is called once per frame
//void Update () {
//}
}
/*******
*
* button长按的代理
* http://blog.csdn.net/lyh916/article/details/51454673
*
*
* */
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.Events;
public class RepeatButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler {
public bool invokeOnce = false;//是否只调用一次
private bool hadInvoke = false;//是否已经调用过
public float interval = 0.1f;//按下后超过这个时间则认定为"长按"
private bool isPointerDown = false;
private float recordTime;
public UnityEvent onDown = new UnityEvent();//按下时调用
public UnityEvent onPress = new UnityEvent();//按住时调用
public UnityEvent onRelease = new UnityEvent();//松开时调用
void Start() {
}
void Update() {
if (invokeOnce && hadInvoke)
return;
if (isPointerDown) {
if ((Time.time - recordTime) > interval) {
onPress.Invoke();
hadInvoke = true;
}
}
}
public void OnPointerDown(PointerEventData eventData) {
isPointerDown = true;
recordTime = Time.time;
onDown.Invoke();
}
public void OnPointerUp(PointerEventData eventData) {
isPointerDown = false;
hadInvoke = false;
onRelease.Invoke();
}
public void OnPointerExit(PointerEventData eventData) {
//isPointerDown = false;
//hadInvoke = false;
//onRelease.Invoke();
}
}
最后附上demo:http://download.csdn.net/download/ldy597321444/10249594
效果地址:http://www.manew.com/thread-113570-1-1.html
---------------------
作者:Unity_阿黄
来源:CSDN
原文:https://blog.csdn.net/ldy597321444/article/details/79311014
(转载)【UGUI】侧面滑出的菜单栏,宽度自适应的更多相关文章
- Android 开发实践 ViewGroup 实现左右滑出窗口(一)
利用假期把以前做的东西总结整理一下,先从简单的开始吧.实现的效果是这样的: 做了个截屏动画,比例有点不对了,凑合着看吧. 整个窗口有3部分组成,中间的主界面是个列表,左边的滑出界面是个菜单,右边的 ...
- 它们的定义ListView,实现Item除去滑动和滑出菜单效果
这个程序是基于变化从网上开源项目,详情货源忘记.懒得去搜索,.假设有不合适的地方.请与我联系作者.我会及时回复和处理! 序中主要包括两个ListView,一个是实现側滑删除.一个是側滑出菜单,代码中的 ...
- Android 开发实践 ViewGroup 实现左右滑出窗口(二)
接上一篇 <Android 开发实践 ViewGroup 实现左右滑出窗口(一)http://www.cnblogs.com/inkheart0124/p/3532862.html> 源码 ...
- css transition 实现滑入滑出
transition是css最简单的动画. 通常当一个div属性变化时,我们会立即看的变化,从旧样式到新样式是一瞬间的,嗖嗖嗖!!! 但是,如果我希望是慢慢的从一种状态,转变成另外一种状态,怎么办? ...
- iOS中如何创建一个滑出式导航面板(1)
本文将介绍如何创建类似Facebook和Path iOS程序中的滑出式导航面板. 向右滑动 滑出式设计模式可以让开发者在程序中添加常用的导航功能,又不会浪费屏幕上宝贵的空间.用户可以在任意时间滑出导航 ...
- android 开发 实现一个app的引导页面,使用ViewPager组件(此引导的最后一页的Button会直接写在最后一页布局里,跟随布局滑进滑出)
基本ViewPager组件使用方式与我之前写的https://blog.csdn.net/qq_37217804/article/details/80332634 这篇博客一致. 下面我们将重点详细解 ...
- Activity左边滑出,右边滑入的动画切换
Activity左边滑出,右边滑入的动画切换 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46920809 大家都知道Android ...
- jquery定时滑出可最小化的底部提示层
效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/index.htm当打开页面或者刷新页面后等待两秒钟,会在底部滑出可最小化的提示层.滑出层半透明,可关闭再现. ...
- 鼠标滑过图片变暗文字链接滑出jQuery特效
效果体验:http://hovertree.com/texiao/jquery/7.htm HTML文件代码: <!DOCTYPE html> <html xmlns="h ...
随机推荐
- Webshell密码极速爆破工具 – cheetah
https://www.t00ls.net/thread-39660-1-1.html
- mui 窗口管理及窗口之间的数据传递
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- python学习之旅(六)
Python基础知识(5):基本数据类型之字符串(Ⅱ) 字符串方法 17.join:对字符串进行拼接 x="can" y="li" y.join(x) 结果: ...
- javascript数组的内置对象Array
javascript的内置对象Array是用于构造数组的全局对象,数组是类似于列表的高阶对象. 创建数组的方法: 1通过字面量:var arr = [1,2,3]; 里面的参数直接作为数组里的值 2通 ...
- torch.utils.data.DataLoader使用方法
数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集.在训练模型时使用到此函数,用来把训练数据分成多个小组,此函数每次抛出一组数据.直至把所有的数据都抛出.就是做一个数据的初始化. 生成迭 ...
- lambda用法
1.lambda为匿名函数,即不用起函数名2.如果函数使用次数很少并且很简洁,一般可以考虑用lambda函数3.lambda可以简化代码的可读性4.lambda不能使用if for等复杂的语法 示例一 ...
- PTA 复数四则运算
本题要求编写程序,计算2个复数的和.差.积.商. 输入格式: 输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部.题目保证C2不为0. 输出格式 ...
- 使用js对WGS-84 ,GCJ-02与BD-09的坐标进行转换
获取到经纬度在用百度地图进行定位时,却发现行驶轨迹的路线定到海里面去了.从网上查阅,知道此方法. 出处:https://www.jianshu.com/p/53f00ba897f7 一.在进行地图开发 ...
- Fernflower 反编译.class文件
最近有些奇怪Intellij IDEA通过什么查看的源码,通过打开源码意外的发现如下注释 原来是通过Fernflower这个反编译工具w(゚Д゚)w. 使用Fernflower反编译出的代码相当友好, ...
- 腾讯TBS加载网页无法自适应记录
1. 所遇到的问题 webview加载指定网页无法实现自适应,之前在加载重构一个网页的时候,其实也遇到这种问题,然后就有了下面的一下步骤 WebSettings webSettings = view ...