(转载)【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 ...
随机推荐
- linux 的基本操作(linux系统的日常管理)
系统的日常管理 笔者在前面介绍的内容都为linux系统基础类的,如果你现在把前面的内容全部很好的掌握了,那最好了.不过笔者要说的是,即使你完全掌握了,你现在还是不能作为一名合格的linux系统管理员的 ...
- js 图片与base64互相转换
js将图片转化为base64 参考地址:http://www.cnblogs.com/mr-wuxiansheng/p/6931077.html var img = "imgurl" ...
- PHP合并数组及去重
本文介绍的是一维数组的去重 合并数组的方法 array_merge: 数字键,直接往后添加,key重置 字符串键,后面的数组的值会替代前面的值 +: 数字键,后面的数组的值不会替代前面的值 字符串键, ...
- Python学习之旅(七)
Python基础知识(6):基本数据类型之列表 在Python中,最基本的数据结构是序列.序列中的每个元素被分配一个序号——即元素的位置,也称为索引.第一个索引从0开始,如果要从右边开始,序列中的最后 ...
- AE实现拖拽
http://edndoc.esri.com/arcobjects/9.2/net/63391c82-c2e6-4797-b2e6-2c1d92f56f44.htm http://help.arcgi ...
- [Day15]常用API(Object类、String类)
1.Java的API(API: Application(应用) Programming(程序) Interface(接口)) Java API是JDK中提供使用的类,类已经将底层代码进行封装 在JDK ...
- Web开发——HTML基础(高级文本格式 列表/style)
文档资料参考: 参考:https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_fo ...
- 简单的可以跑起来的dubbo例子
原文地址:https://blog.csdn.net/jingyangV587/article/details/78901937 项目结构: maven项目,内部三个module. <?xml ...
- java框架之MyBatis(2)-进阶&整合Spring&逆向工程
进阶内容 准备 jdbc.url=jdbc:mysql://192.168.208.192:3306/test?characterEncoding=utf-8 jdbc.driver=com.mysq ...
- 公网k8s
dm :32750/swagger/ 统一在 cd /opt/iot 删除容器,自动创建容器 dm 更新dm和acl包 dm源文件chart包 cd /var/lib/helmrepo/ h ...