在unity中实现分页滚动的大小的缩放功能(UGUI)
Posted 头号理想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在unity中实现分页滚动的大小的缩放功能(UGUI)相关的知识,希望对你有一定的参考价值。
接上一篇博客 这篇博客我们继承上一篇写的脚本
给我们的分页滚动天添加新的功能
首先给出demo
可以看到这个效果还是比较棒的 大家忽略里边的文字 是我乱写的
这个实在上一篇博客的基础上 继承上一篇博客的脚本
这是我专门开设的一个专栏 地址
上边的专栏 是讲所有关于分页滚动的开发和优化的
大家有兴趣 可以整体的看一下
开发过程
在上一个的基础上 我们只需要使用面向对象的特性来添加新的功能即可
这样的好处有很多 一是简洁明了,二是可以避免很多问题(不去修改原来成型的代码)
public class ScalePageView : PageScrollview
//继承上一个类来扩展新功能(二)
[Header("缩放参数")]
public float currentScale = 1f;
public float otherScale = 0.6f;
public int lastpage;//上一页
public int nextpage;//下一页
public GameObject[] items;
protected override void Start()
base.Start();
items = new GameObject[pagecount];
for(int i = 0; i < pagecount; i++)
items[i] = GameObject.Find("Content").transform.GetChild(i).gameObject;//获得子物体
protected override void Update()
base.Update();
ListenScale();
public void ListenScale()//监听scale
//找到上一页和下一页
for(int i = pages.Length-1; i >=0 ; i--)
if (pages[i] <= rect.horizontalNormalizedPosition)
lastpage = i;
break;
for (int i = 0; i < pages.Length; i++)
if (pages[i] >= rect.horizontalNormalizedPosition)
nextpage = i;
break;
float percent = Mathf.Abs((rect.horizontalNormalizedPosition - pages[lastpage]) /(pages[nextpage] - pages[lastpage]));
items[lastpage].transform.localScale = Vector3.Lerp(Vector3.one * currentScale, Vector3.one * otherScale,(percent) );
items[nextpage].transform.localScale = Vector3.Lerp(Vector3.one * currentScale, Vector3.one * otherScale, 1-percent);
//灵魂代码
for(int i = 0; i < items.Length; i++)
if (i != lastpage && i != nextpage&&i!=currentindex)
items[i].transform.localScale = Vector3.one * otherScale;
其中实现尺寸的变化是使用插值的方法 打击啊可以去自己了解
这个专栏我还会持续更新 如果大家有兴趣 可以关注我
有问题也可以联系我 主页有我的联系方式(知无不答)
以上是关于在unity中实现分页滚动的大小的缩放功能(UGUI)的主要内容,如果未能解决你的问题,请参考以下文章