(转载)【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 ...
随机推荐
- Educational Codeforces Round 1
598A - Tricky Sum 20171103$$ans=\frac{n(n+1)}{2} - 2\sum_{k=0}^{\left \lfloor \log_2 n \right \rf ...
- 将 Entity Framework、LINQ 和 Model-First 用于 Oracle 数据库
目的 本教程介绍如何使用 Entity Framework.语言集成查询 (LINQ),以及如何对 Oracle 数据库使用 Model-First 以生成数据定义语言 (DDL) 脚本. 所需时间 ...
- 不偏移的天地图地图服务-ArcGIS版
地图偏移和纠偏是使用在线电子地图不可避免的话题.研究不深入,暂且分享一种已纠偏的地图服务. 服务地址 直接放点干货: 影像地图: http://t0.tianditu.com/cia_w/esri/w ...
- ajax里的status和readystate
先看ajax封装函数 function ajaxFunc(method,url,data,callback) { var xhr; if (XMLHttpRequest) { xhr = new XM ...
- vue里的样式添加之类名改动 和style改动
类名下有不同样式,通过增加或者减少类名,来增加或减少样式. v-bind:class = {类名:变量,类名:变量...} 变量为布尔值,如果是true则类名添加,反正类名不添加到该元素身上 v-b ...
- Hadoop 跨集群访问
[原文地址] 跨集群访问 发表于 2015-06-01 | 简单总结下跨集群访问的多种方式. 跨集群访问HDFS 直接给出HDFS URI 我们平常执行hadoop fs -ls /之类的操作 ...
- position inherit 定位
inherit 继承父元素 定位 举例 : <div class="father"> <p></p> </div> div{ ...
- Java编程基础篇第六章
构造方法 一:概念: 给对象的数据(属性)进行初始化 二:特点: a.方法名与类同名(字母大小写也要一样) b.没有返回值类型 c.没有具体的返回值 return 三:构造方法重载: 方法名相同,与返 ...
- hibernate--博客
地址:http://blog.csdn.net/wangpeng047/article/category/907051
- 阿里OSS存储,php版demo
最近项目移到云服务器,所以需要处理一下 Step 1. 初始化OSSClient SDK与OSS后台服务所有的交互都是通过OSSClient完成的.通过以下代码,可以生成OSSClient的实例: & ...