unity循环滚动列表_【unity游戏开发】LoopScrollRect组件
引言
对于背包界面,排行榜列表,聊天消息,等有大量的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组件相关推荐
- unity c# 制作英雄 卡牌 循环滚动列表
unity c# 制作英雄 卡牌 循环滚动列表 我们将卡牌之间 的间隔变大,则可以看到 下面的UI 首先,我们 想做一个滚动列表,这就像在 x轴 和Z 轴上的 一个循环的椭圆 ##如果我们将卡牌平均分 ...
- vue 左右循环滑动_vue实现循环滚动列表
本文实例为大家共享了vue实现循环滚动列表的详细代码,供大家参考,详细内容如下 1.安装 vue-seamless-scroll 实例文档链接 cnpm install vue-seamless- ...
- 【游戏开发创新】520程序员的浪漫,给CSDN近两万的粉丝比心心(python爬虫 | Unity循环复用列表 | 头像加载与缓存)
文章目录 一.前言 二.最终效果 三.读取CSDN粉丝列表数据 1.分析粉丝列表页面结构 2.爬数据 四.Unity制作 1.文件读取 2.c#解析json 3.UGUI循环复用列表 4.头像的加载 ...
- 【游戏开发实战】Unity循环复用列表,支持不规则尺寸(对象池 | UGUI | ScrollRect | Demo源码)
文章目录 一.前言 二.使用方法 1.创建Scroll View 2.设置Scroll View参数 2.1.调整宽高 2.2.删除Scrollbar滑块 2.3.设置item模板: Item Tem ...
- unity敌人面向玩家_面向游戏玩家的五种便捷(免费)Windows工具
unity敌人面向玩家 Windows is the home of PC gaming, but that doesn't mean it can't use a little bit of rem ...
- Unity UGUI 滚动列表
效果: 当前用的 Unity 版本为 5.6.7f1,场景分辨率为 1440 * 2560,下面的案例中,都是以这个分辨率为标准,如果你设置的屏幕大小和我的不一样,那么在后面的操作中,参数可能会不一样 ...
- unity 3d网络游戏实战(全).pdf_“游戏开发入门指南——Unity+”的食用指南
虽然专栏的文章已在置顶中按内容分好类了([置顶]游戏开发入门指南专栏目录),但不排除仍然有初学者面对繁杂的内容感觉无从下手.因此额外带来一篇食用指南,旨在给想要通过本专栏学习游戏开发的同学一条相对容易 ...
- 世界顶级音效公司_世界顶级游戏开发公司
世界顶级音效公司 The game industry is growing, especially among small, independent development companies. If ...
- 游戏引擎开发和物理引擎_视频游戏开发的最佳游戏引擎
游戏引擎开发和物理引擎 In this article, we'll look at some of the most popular game engines for video game deve ...
最新文章
- Kafka如何对Topic元数据进行细粒度的懒加载、同步等待?
- 学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...
- dat14-memcached
- python文字转图片_python-将文本文件转换为图形
- jquery省市插件
- npm ERR! code EINTEGRITY 解决方案
- CAD下载与安装(含安装包百度网盘链接)
- 打印纸张尺寸换算_电脑打印纸规格全记录
- 记一次应急-插U盘之后文件夹全变成exe中毒(100%解决)
- 计算机应用基础2004版,计算机应用基础试题2004年6月
- The Dominator of Strings
- Oracle中按天、自然周、月、季、年周期统计
- 构建线上线下一体化解决方案,旺小宝以AI赋能房企数智化营销|爱分析访谈
- 增值电信业务经营许可证有哪些?如何区分业务类型?
- [翻译]2020年综述:基于深度学习的视频超分辨率
- HDU 4069 Squiggly Sudoku DLX
- linux安装docker并搭建DNS服务器,劫持百度小实验
- firefox不兼容java,JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
- 关于MATLAB对已有数据的频谱分析及关心频率的幅值计算
- 国内最值得关注的大数据平台厂家