首先看下项目效果

实现效果

发现实现效果并不难,利用动画(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】侧面滑出的菜单栏,宽度自适应的更多相关文章

  1. Android 开发实践 ViewGroup 实现左右滑出窗口(一)

    利用假期把以前做的东西总结整理一下,先从简单的开始吧.实现的效果是这样的:   做了个截屏动画,比例有点不对了,凑合着看吧. 整个窗口有3部分组成,中间的主界面是个列表,左边的滑出界面是个菜单,右边的 ...

  2. 它们的定义ListView,实现Item除去滑动和滑出菜单效果

    这个程序是基于变化从网上开源项目,详情货源忘记.懒得去搜索,.假设有不合适的地方.请与我联系作者.我会及时回复和处理! 序中主要包括两个ListView,一个是实现側滑删除.一个是側滑出菜单,代码中的 ...

  3. Android 开发实践 ViewGroup 实现左右滑出窗口(二)

    接上一篇 <Android 开发实践 ViewGroup 实现左右滑出窗口(一)http://www.cnblogs.com/inkheart0124/p/3532862.html> 源码 ...

  4. css transition 实现滑入滑出

    transition是css最简单的动画. 通常当一个div属性变化时,我们会立即看的变化,从旧样式到新样式是一瞬间的,嗖嗖嗖!!! 但是,如果我希望是慢慢的从一种状态,转变成另外一种状态,怎么办?  ...

  5. iOS中如何创建一个滑出式导航面板(1)

    本文将介绍如何创建类似Facebook和Path iOS程序中的滑出式导航面板. 向右滑动 滑出式设计模式可以让开发者在程序中添加常用的导航功能,又不会浪费屏幕上宝贵的空间.用户可以在任意时间滑出导航 ...

  6. android 开发 实现一个app的引导页面,使用ViewPager组件(此引导的最后一页的Button会直接写在最后一页布局里,跟随布局滑进滑出)

    基本ViewPager组件使用方式与我之前写的https://blog.csdn.net/qq_37217804/article/details/80332634 这篇博客一致. 下面我们将重点详细解 ...

  7. Activity左边滑出,右边滑入的动画切换

    Activity左边滑出,右边滑入的动画切换 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46920809 大家都知道Android ...

  8. jquery定时滑出可最小化的底部提示层

    效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/index.htm当打开页面或者刷新页面后等待两秒钟,会在底部滑出可最小化的提示层.滑出层半透明,可关闭再现. ...

  9. 鼠标滑过图片变暗文字链接滑出jQuery特效

    效果体验:http://hovertree.com/texiao/jquery/7.htm HTML文件代码: <!DOCTYPE html> <html xmlns="h ...

随机推荐

  1. bug制造者又上线了

    上一家公司,领导经常这样表扬一位同事,“你写的bug远比你的功能值钱...” 今天特么的突然觉得我好像也有这样的功能,不知道是上次回家把脑子落家里了还是,前几天淋雨脑子进了水了. 呢么简单一个功能,愣 ...

  2. JavaScript---设计模式总结

    写了两篇设计模式的东西后,感觉不是很完美,决定闭关修炼,同时写下笔记 重申:设计模式很有用! 这里列一个设计模式的目录防止漏了某个东西(未完成的没有链接) 单例模式 策略模式 代理模式 迭代器模式 发 ...

  3. Oracle课程档案,第十二天

    死锁是由于两个对象在拥有一份资源的情况下申请另一份资源, 而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且所持资源无法释放. 阻塞是由于资源不足引起的排队等待现象. unso:撤销 c ...

  4. python----运行机制

    Python 是一门解释型的编程语言,因此它具有解释型语言的运行机制. 计算机程序,其实就是一组计算机指令集,能真正驱动机器运行的是机器指令,但让普通开发者直接编写机器指令是不现实的,因此就出现了计算 ...

  5. VS code -python 使用笔记本

    1--使用虚拟环境 |----setting->search: python.venv->设置  venv path (你创建的虚拟环境文件夹所在路径,此处我的是 - 目录下) |---- ...

  6. iTextSharpH

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. particles.js中文开发手册

    2017年6月17日01:06:28 因为自己需要做产品,所以一个好的UI界面也是很重要的,发现这种散射的原子颗粒特效还不错,就弄了一个 官方github:https://github.com/Vin ...

  8. HDU_5528_Count a * b

    Count a * b Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  9. scrollview嵌套tableview

    之前写过一次,忘记了, 用的通知 FS

  10. luogu3830 [SHOI2012]随机树

    传送门:洛谷 题目大意:对于一个只有一个节点的二叉树,一次操作随机将这棵树的叶节点的下方增加两个节点.$n-1$次操作后变为$n$个叶节点的二叉树.求:(1)叶节点平均深度的期望值(2)树深度的数学期 ...