Unity实现图片无限循环轮播(横and竖)
先来看看效果
- 横
实现
- 介绍:只可以左右按键控制图片的切换,可无限扩展图片数量
- 思路:首尾相连。尾图片与首图片互换位置以及动画效果
- 主要代码:
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);}}}
- 竖
- 介绍:上下拖拽、滚轮、点击按钮都可切换图片
- 思路:2D触发器,Lerp线性平滑动画
- 主要代码:
Init.csprivate 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.cspublic 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