简单代码 实现unity Tab菜单效果
image.png
需求:右边为ScrollView 可滑动 左边为TabGroup 滑动对应tab变化
using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; using System; namespace Babybus.BabyModule { public class ScrollManager : MonoBehaviour, IBeginDragHandler, IEndDragHandler { ScrollRect scrollRect; public float smoothing = 4; private bool isDrag = false; private float targetVertivalPosition = 0; private float[] pageArray = new float[] { 0.006718779f, 0.35f, 0.68f, 1 }; //设定每一页 设定每一页的float x 信息 public Toggle[] toggleArray; bool dragOnce = false; public void OnBeginDrag(PointerEventData eventData) { isDrag = true; dragOnce = true; } public void OnEndDrag(PointerEventData eventData) { isDrag = false; float posX = scrollRect.verticalNormalizedPosition; print(posX); int index = 3; float offset = Mathf.Abs(pageArray[index] - posX);//默认离第一页最近 for (int i = 0; i < pageArray.Length; i++) { float offsettemp = Mathf.Abs(pageArray[i] - posX); if (offsettemp < offset) {//绝对值值越小离越近 index = i; offset = offsettemp; } } targetVertivalPosition = pageArray[index]; toggleArray[index].isOn = true; } // Use this for initialization void Start() { scrollRect = this.transform.GetComponent<ScrollRect>(); scrollRect.verticalNormalizedPosition =1; } // Update is called once per frame void Update() { if (isDrag == false&&dragOnce) { scrollRect.verticalNormalizedPosition = Mathf.Lerp(scrollRect.verticalNormalizedPosition, targetVertivalPosition, Time.deltaTime * smoothing);//通过插值实现缓慢滚动 } } //Tab 点击 public void OnTogglePage_1_Change(bool isOn) { if (isOn) { targetVertivalPosition = pageArray[3]; dragOnce = true; } } public void OnTogglePage_2_Change(bool isOn) { if (isOn) { targetVertivalPosition = pageArray[2]; dragOnce = true; } } public void OnTogglePage_3_Change(bool isOn) { if (isOn) { targetVertivalPosition = pageArray[1]; dragOnce = true; } } public void OnTogglePage_4__Change(bool isOn) { if (isOn) { targetVertivalPosition = pageArray[0]; dragOnce = true; } } } }
原文地址:https://www.jianshu.com/p/49aa8e0b4932
相关推荐
-
asp.net权限认证:HTTP基本认证(http basic) C#
2019-6-2
-
Asp.NetCore之组件写法 C#
2019-9-18
-
使用 GMap.NET 实现添加标注、移动标注功能。(WPF版) C#
2019-6-8
-
C#克隆 C#
2019-9-18
-
在 .NET Core 下的 Swagger UI 自定义操作 C#
2019-5-23
-
在Bootstrap开发中解决Tab标签页切换图表显示问题 C#
2019-5-17
-
详谈 Unity3D AssetBundle 资源加载,结合实际项目开发实例 C#
2019-7-3
-
【unity】使用Profiler进行性能分析 C#
2019-8-30
-
C# 设置Word文档背景(纯色/渐变/图片背景) C#
2019-4-19
-
Loogn.OrmLite文档 C#
2019-5-12