Unity实现图片无限循环轮播(横and竖)

先来看看效果


  • 按键轮播

实现

  1. 介绍:只可以左右按键控制图片的切换,可无限扩展图片数量
  2. 思路:首尾相连。尾图片与首图片互换位置以及动画效果
  3. 主要代码
RectTransform[] tfs;    //需要扩展只需往该数组添加Item即可
void LeftBtnClickEvent()
    {
        for (int i = tfs.Length; i > 0; i--)
        {
            int tem = i % tfs.Length;	//首尾连接关键

            if (tem == 0)
            {
                tfs[tem].anchoredPosition = tfs[i - 1].anchoredPosition;
                tfs[tem].sizeDelta = tfs[i - 1].sizeDelta;
            }
            else
            {		//DOTween动画过渡
                tfs[tem].DOAnchorPos(tfs[i - 1].anchoredPosition, 0.2f);
                tfs[tem].DOSizeDelta(tfs[i - 1].sizeDelta, 0.2f);
            }
        }
    }

  • 拖拽点击
  1. 介绍:上下拖拽、滚轮、点击按钮都可切换图片
  2. 思路:2D触发器,Lerp线性平滑动画
  3. 主要代码
Init.cs
 private void Update()
    {
    //处理动画
        if (!isPlay) return;
        float tem = Mathf.Lerp(View.anchoredPosition.y, Pos, 0.15f);
        View.anchoredPosition = new Vector2(View.anchoredPosition.x, tem);
        
        Invoke("Setplay",0.4f);
    }
    
  Logic.cs
    public static void TargetPosMove(string _num, UnityAction<int> onProcess)
    {
        if (_num == "1")
        {
            onProcess.Invoke(0);
        }
        else
        {
            onProcess.Invoke((int.Parse(_num) - 1) * 70);
        }
    }

    /// <summary>
    /// 移动
    /// </summary>
    /// <param name="num"></param>
    public static void Move(string num)
    {
    //警报器
        Logic.TargetPosMove(num, pos =>
        {
            Init.Pos = pos;
            Init.isPlay = true;
        });
    }

源码

需要源码请点击链接下载,顺手写的功能,不合理的地方请大佬们指点!

链接:Viwepager.zip

github地址: https://github.com/AnyAnq/Calendar

Logo

苏州本地的技术开发者社区,在这里可以交流本地的好吃好玩的,可以交流技术,可以交流招聘等等,没啥限制。

更多推荐