Unity3D ScrollView跳转功能
来源:互联网 发布:淘宝特种经营许可申请 编辑:程序博客网 时间:2024/06/06 15:00
最近在项目中需要用到ScrollView通过外部传进来的参数进行UI跳转的功能,一开始做了一个通过改变ScrollBar里的Value值跳转的,但是实际项目里是没有ScrollBar的,所以通过一个计算与DoTween插件实现了跳转功能。
第一步
新建一个ScrollView,删除掉ScrollView下的ScrollBar,然后再Content下添加自动排版组件,如图所示。
第二步
新建一个脚本,脚本内容如下
using UnityEngine;using System.Collections;using UnityEngine.UI;using DG.Tweening;public class ScrollViewDemoTest : MonoBehaviour{ public RectTransform Content;//调用Content的RectTransform组件 public RectTransform ViewProt;//调用ViewPort的RectTransform组件 // Use this for initialization void Start() { for (int i = 0; i < Content.childCount; i++) {//通过一个for循环来给Content下的所有子物体命名并添加委托。 Content.GetChild(i).name = i.ToString(); Content.GetChild(i).GetChild(0).GetComponent<Text>().text = i.ToString(); ClickListener.Get(Content.GetChild(i).gameObject).onClick = OnBtnNumber; } } public void OnBtnNumber(GameObject obj) { float length = int.Parse(obj.name) * (Content.GetComponent<GridLayoutGroup>().cellSize.y + Content.GetComponent<GridLayoutGroup>().spacing.y); float ViewProtH=Content.childCount*(Content.GetComponent<GridLayoutGroup>().cellSize.y+Content.GetComponent<GridLayoutGroup>().spacing.y)-ViewProt.sizeDelta.y-Content.GetComponent<GridLayoutGroup>().spacing.y; if (length > ViewProtH) { length = ViewProtH; } DOTween.To(() => Content.offsetMax, x => Content.offsetMax = x, new Vector2(0, length), 0.615f); }}
Grid Layout Group.cellSize.y的参数为Content下子物体的长度,.Spacing.y为子物体之间Y轴的间隔,因为我们用int类型给子物体命名,所以当子物体的名字乘以子物体的长度加上子物体之间的间隔就等于每个按钮应该缩进的值也就是Length变量。
然后最后几个按钮会因为缩进不够而特别鬼畜,所以我们通过计算Content的总长度减去ViewProt的长度再减去子物体之间的间隔可以得到在ViewPort里最上方的按钮应该缩进的长度。
所以当按下的按钮的缩进长度大于这个长度时,我们将ViewProt最上方按钮应缩进的长度赋给Length变量
同时调用DOTween的To方法,将Content的位置移动到Length变量。
阅读全文
0 0
- Unity3D ScrollView跳转功能
- Unity3D ScrollView滑动优化
- Unity3d之ScrollView实现图片浏览切换功能----折磨的学习
- Unity3D NGUI ScrollView的学习
- Unity3D NGUI ScrollView的学习
- Unity3D Spine 跳转
- Unity3D里场景跳转
- iOS ScrollView 计算页数跳转
- scrollView的一些功能
- Unity3D淡入淡出场景跳转
- Unity3D-NGUI教程:如何创建ScrollView
- 关于Unity3D中ScrollView位置偏差问题
- Unity3D: ScrollView 滚动至底部显示
- 实现基本的scrollView功能
- unity3d屏幕截图功能
- Unity3d 常用功能总结
- [unity3d]unity聊天功能
- unity3d 新版本功能思考
- 从零基础认识分页插件Pagehelper
- Java笔记9
- 几种常见排序算法
- Unity3D数学之路——Vector3类(一)
- BZOJ1614 [Usaco2007 Jan]Telephone Lines架设电话线 二分/魔性剪枝/最小边长连通
- Unity3D ScrollView跳转功能
- mysql5.7初始化后连接mysql的时候报:Your password has expired.
- pat乙级真题 1068. 万绿丛中一点红(20)
- [Vue]不能使用索引直接修改数组,但可以使用索引更新对象数组内的属性
- [JS] 改自网络:单行任意数量条公告循环滚动代码
- 复习系列--javascript数组的常用方法总结
- Hibernate入门(四)之持久化对象的三种状态
- Slim中的集合类Collection
- 使用原生js读取树形结构对象构筑多级结构菜单