引言

对于背包界面,排行榜列表,聊天消息,等有大量的UI列表的界面,
常规做法是为每一条数据生成一个格子,在数据量越大的情况下,会生成越来越多的Gameobject,引起卡顿。

这个组件就是为了优化这个问题诞生的,

就以联盟宝箱为例子,联盟宝箱最多可以容纳300个宝箱,如果一下子生成300个,整个界面就会卡到爆炸,

这个组件的做法是就生成视图可见的个数,然后拖动的时候循环复用,

比如向下拖动,上面的item看不见了,就挪到下面复用。


lua层使用

/// <summary>
/// 初始化循环滚动
/// </summary>
/// <param name="loopItems">要生成的item列表</param>
/// <param name="curIndex">第几个item作为列表顶部</param>
/// <param name="loopMax">循环列表生成最大个数</param>
/// <param name="listener">注册拖动回调,给item赋值</param>
/// <param name="isLocation">第二次调用的时候,是否复位,true的话会复位到原来的位置</param>
public virtual void InitLoop(RectTransform[] loopItems, int curIndex, int loopMax, System.Action<int, int> listener, bool isLocation)

一、在预制上挂LoopScrollRect组件

二、导出节点

三、lua层注册调用接口InitLoop,初始化组件,注册滑动事件

self.Scroll:InitLoop(childItems, 0, giftNum, handler(self, self.OnRefreshGiftItem),toTop)

四、滑动事件回调会将现有item对象数据初始化,

并且在每次滑动的时候回调事件,初始化item,

回调传回的参数是对象索引,所以需要我们记录item对象列表:self._giftItems和item对应的数据self._giftList ,用来初始化

//C# 的索引是从0开始的,lua的索引是从1开始的,所以要+1
function AllianceGiftView:OnRefreshGiftItem(objIdx, dataIdx)local giftData = self._giftList[dataIdx + 1]local giftItem = self._giftItems[objIdx + 1]self._giftItemDic[giftData:GetGiftID()] = giftItemgiftItem:SetInfo(giftData)
end

源码学习:

魔改版源码:

https://github.com/Aver58/Tools/tree/master/UnityProject/Assets/Scripts/Component

想要更深入了解的可以参考开源源码:

qiankanglai/LoopScrollRect

unity循环滚动列表_【unity游戏开发】LoopScrollRect组件相关推荐

  1. unity c# 制作英雄 卡牌 循环滚动列表

    unity c# 制作英雄 卡牌 循环滚动列表 我们将卡牌之间 的间隔变大,则可以看到 下面的UI 首先,我们 想做一个滚动列表,这就像在 x轴 和Z 轴上的 一个循环的椭圆 ##如果我们将卡牌平均分 ...

  2. vue 左右循环滑动_vue实现循环滚动列表

    本文实例为大家共享了vue实现循环滚动列表的详细代码,供大家参考,详细内容如下 1.安装 vue-seamless-scroll   实例文档链接 cnpm install vue-seamless- ...

  3. 【游戏开发创新】520程序员的浪漫,给CSDN近两万的粉丝比心心(python爬虫 | Unity循环复用列表 | 头像加载与缓存)

    文章目录 一.前言 二.最终效果 三.读取CSDN粉丝列表数据 1.分析粉丝列表页面结构 2.爬数据 四.Unity制作 1.文件读取 2.c#解析json 3.UGUI循环复用列表 4.头像的加载 ...

  4. 【游戏开发实战】Unity循环复用列表,支持不规则尺寸(对象池 | UGUI | ScrollRect | Demo源码)

    文章目录 一.前言 二.使用方法 1.创建Scroll View 2.设置Scroll View参数 2.1.调整宽高 2.2.删除Scrollbar滑块 2.3.设置item模板: Item Tem ...

  5. unity敌人面向玩家_面向游戏玩家的五种便捷(免费)Windows工具

    unity敌人面向玩家 Windows is the home of PC gaming, but that doesn't mean it can't use a little bit of rem ...

  6. Unity UGUI 滚动列表

    效果: 当前用的 Unity 版本为 5.6.7f1,场景分辨率为 1440 * 2560,下面的案例中,都是以这个分辨率为标准,如果你设置的屏幕大小和我的不一样,那么在后面的操作中,参数可能会不一样 ...

  7. unity 3d网络游戏实战(全).pdf_“游戏开发入门指南——Unity+”的食用指南

    虽然专栏的文章已在置顶中按内容分好类了([置顶]游戏开发入门指南专栏目录),但不排除仍然有初学者面对繁杂的内容感觉无从下手.因此额外带来一篇食用指南,旨在给想要通过本专栏学习游戏开发的同学一条相对容易 ...

  8. 世界顶级音效公司_世界顶级游戏开发公司

    世界顶级音效公司 The game industry is growing, especially among small, independent development companies. If ...

  9. 游戏引擎开发和物理引擎_视频游戏开发的最佳游戏引擎

    游戏引擎开发和物理引擎 In this article, we'll look at some of the most popular game engines for video game deve ...

最新文章

  1. Kafka如何对Topic元数据进行细粒度的懒加载、同步等待?
  2. 学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...
  3. dat14-memcached
  4. python文字转图片_python-将文本文件转换为图形
  5. jquery省市插件
  6. npm ERR! code EINTEGRITY 解决方案
  7. CAD下载与安装(含安装包百度网盘链接)
  8. 打印纸张尺寸换算_电脑打印纸规格全记录
  9. 记一次应急-插U盘之后文件夹全变成exe中毒(100%解决)
  10. 计算机应用基础2004版,计算机应用基础试题2004年6月
  11. The Dominator of Strings
  12. Oracle中按天、自然周、月、季、年周期统计
  13. 构建线上线下一体化解决方案,旺小宝以AI赋能房企数智化营销|爱分析访谈
  14. 增值电信业务经营许可证有哪些?如何区分业务类型?
  15. [翻译]2020年综述:基于深度学习的视频超分辨率
  16. HDU 4069 Squiggly Sudoku DLX
  17. linux安装docker并搭建DNS服务器,劫持百度小实验
  18. firefox不兼容java,JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
  19. 关于MATLAB对已有数据的频谱分析及关心频率的幅值计算
  20. 国内最值得关注的大数据平台厂家

热门文章

  1. Redis cluster集群扩容缩容原理
  2. 推荐系统rank模块-Online Learning
  3. 聊聊高并发(四十)解析java.util.concurrent各个组件(十六) ThreadPoolExecutor源码分析
  4. 聊聊JVM(五)从JVM角度理解线程
  5. 第一篇博客记录下自己刚学习的问题
  6. iOS开发月报#10|201904
  7. 常用php时间戳格式化与转换
  8. UML用例图总结来源于网络
  9. Toad 补充与培训 常用菜单
  10. Unity3d中使用自带动画系统制作下雨效果(一)