在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)的主要内容,如果未能解决你的问题,请参考以下文章

在unity中实现分页扩展(旋转3D)功能(UGUI)

如何在 Xamarin 表单中实现分页

小案例--面向对象中实现分页

如何在 React 中实现分页

如何使用hibernate在spring boot中实现分页

java中实现分页的常见几种方式