欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Unity ScrollView实现无限循环效果

程序员文章站 2022-07-02 22:30:13
本文实例为大家分享了unity scrollview实现无限循环效果的具体代码,供大家参考,具体内容如下在unity引擎中scrollview组件是一个使用率比较高的组件,该组件能上下或者左右拖动的u...

本文实例为大家分享了unity scrollview实现无限循环效果的具体代码,供大家参考,具体内容如下

在unity引擎中scrollview组件是一个使用率比较高的组件,该组件能上下或者左右拖动的ui列表,背包、展示多个按钮等情况的时候会用到,在做排行榜类似界面时,item非常多,可能有几百个,一次创建这么多gameobject是非常卡的。为此,使用只创建可视区一共显示的个数,加上后置准备个数。

由于scrollview有两种滚动方式,水平滚动或者垂直滚动,所以我创建了scrollbase基类,和horizontalscroll子类及verticalscroll子类,在父类中设定了公共的抽象方法ondrawview—绘制显示区的方法;createitem----创建item的方法;update----滚动状态下实时更新item的位置。

scrollbase基类

scrollviewloop控制类

这个属性类需要挂载在scrollrect物体身上,然后在面板上进行属性配置

itemarray

Unity ScrollView实现无限循环效果

我们实现无限循环的核心思想是,当滚动框向左移动时,就判断左边的第一个item距离显示框左边框的距离,是否大于item水平间隔*0.5+item的宽度,如果大于则把第一个item放到最后的位置,当滚动框向右移动时就判断右边的item距离右边框的距离情况,这样我们就可以在显示区域一直看到有item的规则显示,所以我定制了一个泛型容器类,这个类存放所有的item信息,当我们取第一个item时自动把第一个item放到最后,当我们取最后一个item时自动把最后的一个item放到最前面。

horizontalscroll子类及verticalscroll子类

scrollview无限循环的核心功能代码都在这两个子类中

horizontalscroll子类

verticalscroll子类

编辑器拓展

这一步我们进行编辑器的拓展,根据scrollviewloop控制类面板上的数据我们在未运行的状态下改变scrollview的显示区域,这样更利于我们的可视化排版。

测试

测试一下功能效果

面板显示如下:

Unity ScrollView实现无限循环效果

运行效果如下(本来想放一段视频的,遗憾的是没能成功操作,尴尬):

Unity ScrollView实现无限循环效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。