UGUI之靠边停靠菜单制作
来源:互联网 发布:做网络推广怎么找客户 编辑:程序博客网 时间:2024/06/05 08:13
问题描述:有时我们想要制作靠边停靠的菜单,当点击菜单时按钮时弹出菜单,而又不想使用第三方插件和Mecanim动画系统来制作,那么我们就可以用纯代码来实现这类菜单的动画效果。
一、首先定义一个枚举类,用于确定菜单停靠在窗口的哪边。
/// <summary> /// 菜单停靠边的枚举类 /// </summary> public enum DockPosition { Left, Right, Up, Bottom }二、然后定义MenuAnim类用于控制菜单的弹出效果,具体代码如下:
public class MenuAnim : MonoBehaviour{ private Vector2 initialPosition, targetPosition, terminalPosition; //用于存储菜单动画相关的位置 public float SmoothRate = 1.0f; //控制动画快慢的参数 public DockPosition menuPositon; //菜单停靠边的参数 private float halfWidth, halfHeight; //用于计算动画移动目的地的参数 private bool isAnimStart = false; //控制是否开始动画 private bool isOpen = false; //控制打开还是关闭菜单 // Use this for initialization void Start() { initialPosition = transform.position; //获取菜单的初始位置 halfWidth = GetComponent<RectTransform>().rect.width; //计算菜单的长宽 halfHeight = GetComponent<RectTransform>().rect.height; switch (menuPositon) //根据菜单的停靠位置确定菜单的弹出位置 { case DockPosition.Left: terminalPosition = initialPosition + new Vector2(halfWidth, 0); break; case DockPosition.Right: terminalPosition = initialPosition + new Vector2(-halfWidth, 0); break; case DockPosition.Up: terminalPosition = initialPosition + new Vector2(0, -halfHeight); break; case DockPosition.Bottom: terminalPosition = initialPosition + new Vector2(0, halfHeight); break; } } // Update is called once per frame void Update() { if (isAnimStart) //菜单动画开始执行 { transform.position = Vector2.Lerp(transform.position, targetPosition, SmoothRate * 10 * Time.deltaTime); if (Vector2.SqrMagnitude(new Vector2(transform.position.x, transform.position.y) - targetPosition) < 0.1) { transform.position = targetPosition; isAnimStart = false; } } } /// <summary> /// 控制菜单弹出还是收回 /// </summary> public void ShowOrHide() { isOpen = !isOpen; if (isOpen) { targetPosition = terminalPosition; //菜单弹出 } else { targetPosition = initialPosition; //菜单收回 } isAnimStart = true; }}
三、将脚本挂到自己的菜单上,并将菜单调整到需要停靠的边外面同时设置好参数,这里挂在一个叫Right的Panel上,如下图:
四、找到控制菜单弹出或关闭的按钮,并将点击事件绑定到ShowOrHide()方法,如下图:
五、运行查看运行效果。
备注:详细的工程可以查看我的github:Unity3D-UGUI-MenuAnimation
阅读全文
1 0
- UGUI之靠边停靠菜单制作
- UGUI之菜单动画效果制作思路
- Unity3D 制作UGUI上下文菜单 插件包
- WinForm窗体屏幕边缘停靠(窗体靠边吸附代码)
- 制作停靠栏
- css之菜单制作
- Qt之窗口靠边隐藏
- UGUI之Toggle之单选框及复选框制作
- Unity3D之UGUI——制作异步加载场景进度条
- Unity教程之-UGUI美术字体的制作与使用
- UGUI的下拉菜单
- 【UGUI】公告菜单
- UGUI 动手制作字体
- UGUI - 制作九宫贴图
- UGUI - 制作Slider进度条
- UGUI - 制作listview
- UGUI - 制作Toggle Group
- UGUI 制作血条
- 设计模式之观察者模式 二
- 常用Shell命令(三)(附加*)
- linux常用命令-重定向与管道操作
- linux 端口映射 桥连模式下无法访问到linux可以通过端口映射访问
- It is not safe to rely on the system's timezone settings. 的PHP问题处理
- UGUI之靠边停靠菜单制作
- 树梅派网线直连电脑并显示界面
- 快速排序(C语言版本)
- python解决字符串替换问题
- python脚本网址爆破
- CSS:网页混合布局,浮动,绝对定位,相对定位
- JNDI
- 零件组装“盛大游戏杯”第15届上海大学程序设计联赛夏季赛
- Python环境搭建之OpenCV