话不多说,先献上效果图:
6个物体无限循环:

3个物体无限循环:

实现的原理:
其实从上面的3个循环的动画可以看出实现原理了。

1.首先创建对应的item循环节点,放在一个父物体下面统一管理。
2.父物体添加EventTrigger组件,用于取代scroll view监听拖拽事件。
3.在脚本里面通过遍历所有item,使用dotween对item进行位移,同时重新设置子item的层级
核心脚本

//改变位置 层级private void __changePos(int moveIndex){for (int i = 1; i <= btnList.Count; i++){var sequence = DOTween.Sequence();if (moveIndex > 0){int v = moveIndex - 1;//除去自身float moveTime = aniTime / moveIndex;//计算动画时间for (int k = v; k >= 0; k--)//遍历所有步骤{int temp = i - k;if (temp < 1){temp += btnList.Count;}sequence.Append(btnList[i - 1].DOMove(prevBtnPos[temp - 1], moveTime).SetEase(Ease.Linear));sequence.Join(btnList[i - 1].DOScale(new Vector3(scaleList[temp - 1], scaleList[temp - 1], scaleList[temp - 1]), moveTime).SetEase(Ease.Linear));}}else{int v = Mathf.Abs(moveIndex) - 1;float moveTime = aniTime / Mathf.Abs(moveIndex);//计算动画时间for (int k = v; k >= 0; k--)//遍历所有步骤{int temp = i + k;if (temp > btnList.Count){temp -= btnList.Count;}sequence.Append(btnList[i - 1].DOMove(prevBtnPos[temp - 1], moveTime).SetEase(Ease.Linear));Debug.Log("移:" + temp);Debug.Log("移:" + scaleList[temp - 1]);sequence.Join(btnList[i - 1].DOScale(new Vector3(scaleList[temp - 1], scaleList[temp - 1], scaleList[temp - 1]), moveTime).SetEase(Ease.Linear));}}btnList[i - 1].transform.SetAsFirstSibling();//层级sequence.AppendCallback(() => {if (isClick){ }isClick = false;});}parent.transform.GetChild(0).SetSiblingIndex(campCount - 2);//左1}

也可以通过点击item进行跳转

 //直接点击item进行跳转private void ClickCamp(Transform btn){int moveIndex = 0;for (int i = 1; i <= btnList.Count; i++){if (btnList[i - 1] == btn){int val = i - 1;if (val < Mathf.Ceil(campCount / 2)){moveIndex = -val;}else{moveIndex = campCount - val;}ChangeList(moveIndex);return;}}}

也支持自己设置循环item的数量

//设置Item数量
//@param number 数量
public void SetCampCount(int number){campCount = number;int halfNum = number / 2;//for (int i = 1; i <= halfNum - 1; i++){scaleList.Add(1 - 0.3f * i);}if (!IsOuNumber(number)){scaleList.Add(1 - 0.3f * (scaleList.Count - 1));}int _num = halfNum;for (int i = 1; i <= halfNum; i++){scaleList.Add(1 - 0.3f * _num);_num--;}for (int i = 1; i <= number; i++){btnList.Add(parent.transform.Find("Image" + i).transform);prevBtnPos.Add(btnList[i - 1].position);}}

资源是付费资源,不够一杯奶茶钱。学生可加我QQ,免费送你学习!
项目资源地址:https://download.csdn.net/download/lq1340817945/77115834

Unity 不使用ScrollView实现有限物体的无限循环相关推荐

  1. unity实现图片轮播效果_unity 背景无限循环滚动效果

    背景无限循环滚动效果如下示: 步骤如下: 导入背景图片后,设置图片的格式,如下图: 2.图片格式也可以设置是Texture格式,但是Wrap Mode 一定要是Repeat[重复发生]:然后记得App ...

  2. Unity 横向滚动ScrollView

    Unity 横向滚动ScrollView 用AnimationCurve做省事很多(/.\) 先上效果图 插件设置 左右都为pingpang using System.Collections; usi ...

  3. Unity中利用材质自发光实现物体闪烁效果

    Unity中利用材质自发光实现物体闪烁效果 补充:这种方法有一点问题,在测试(Windows平台)的时候发现,要想在Build出来的游戏中实现闪烁效果,就必须在 Project 窗口中将源材质的自发光 ...

  4. 小功能⭐️Unity中利用材质自发光实现物体闪烁效果

    文章目录 本文基于VDer的文章<Unity中利用材质自发光实现物体闪烁效果>延伸开发 在实现了具有一个Material的物体闪烁发光之后,延伸开发了具有多个Material的自闪烁效果, ...

  5. 【unity HoloLens2】触碰了物体但没反应,触碰了一次却调用多次,HoloLens2的touch触发机制探究

    [unity HoloLens2]触碰了物体但没反应,触碰了一次却调用多次,HoloLens2的touch触发机制探究 开发项目时发现,有时候触碰了物体却没有触发touch事件,有时候触碰了一次物体, ...

  6. Unity的ScrollView无限循环滚动

    前言 此篇文章当作知识学习即可,需要使用循环复用的小伙伴可以尝试博主近期开发的ScrollCircleMaker v1.0,此插件功能比较完整,使用方便,如果遇到问题可以联系我进行修改. 当Scrol ...

  7. 世界是有限的还是无限的?

    茶余饭后与朋友交谈突然谈到这个问题,世界这里就代表我们所说的宇宙.宇宙到底是有限的还是无限的.如果用严格的数学思维来证明无非就是两种情况,用假设验证法证明.假设宇宙是有限的,那么我们肯定能找到一个边界 ...

  8. unity3d循环滑动_Unity3D中如何用代码实现物体的左右循环移动?

    展开全部 Unity3D中用代码实现物体的左右循环移动的方式如下: 1.新建一32313133353236313431303231363533e59b9ee7ad9431333365646264个Cu ...

  9. 【Unity入门】场景、游戏物体和组件的概念

    版权声明:本文为博主原创文章,转载请注明出处. 游戏和电影一样,是通过每一个镜头的串联来实现的,而这样的镜头我们称之为"场景".一个游戏一般包含一个到多个场景,这些场景里面实现了不 ...

最新文章

  1. python diango 并发_利用gunicorn提高django的并发能力
  2. Microsoft Edge Chrome 下载
  3. GoldenGate系统二:快速搭建三方单向通信GoldenGate环境
  4. python 温度插值nan处理_Python处理inf和Nan值,pytorch,nan,数值
  5. C++学习笔记-利用rapidJSON生成JSON数据
  6. 设计模式8(享元模式,解释器模式)
  7. java实验报告13答案_(完整版)Java程序设计实验报告
  8. 大企业中,Java面试官最爱问的问题集锦(2)
  9. Java面试题-多线程
  10. 80% 的公司在招聘时都忽略的一个细节
  11. 织梦DEDE一键搬迁网站模板数据到DSCMS教程
  12. bzoj·入门OJ·统计损失
  13. mapbox gl文字标注算法基本介绍
  14. 计算机网络课程设计家庭网,家庭无线局域网的组建
  15. python 自动输入_鼠标自动点击、键盘自动输入?几行Python代码搞定
  16. ubuntu安装拼音
  17. “绿多多”绿色资产资讯:良设板+“空间优造”亮相雄安 绿色生态进击!
  18. 8 精通matlab入门求微分方程组的通解特解数值解看这篇文章就够了
  19. 怎么调出全局搜索_eclipse全局搜索快捷键是什么
  20. 免费计算机应用毕业论文,计算机应用毕业论文 5000字

热门文章

  1. Java、对数列求和
  2. linux 查看端口 程序,Linux查看程序端口占用情况
  3. 实战-完整代码答题系统
  4. MATLAB递归将数字一个个输出,数米粒个数和每个米粒面积的matlab算法实现(递归)。 | 学步园...
  5. 电脑数据丢失如何恢复?
  6. mtk,展讯等手机平台知识杂烩
  7. 代数几何:消元(Elimination)、扩展(Extension)
  8. cookie清空Java_java清除及设置cookie代码
  9. 域名和SSL证书是什么关系
  10. 使用csc编译c#程序