unity循环滚动列表_【unity游戏开发】LoopScrollRect组件
生活随笔
收集整理的這篇文章主要介紹了
unity循环滚动列表_【unity游戏开发】LoopScrollRect组件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
引言
對于背包界面,排行榜列表,聊天消息,等有大量的UI列表的界面,常規(guī)做法是為每一條數(shù)據(jù)生成一個格子,在數(shù)據(jù)量越大的情況下,會生成越來越多的Gameobject,引起卡頓。
這個組件就是為了優(yōu)化這個問題誕生的,
就以聯(lián)盟寶箱為例子,聯(lián)盟寶箱最多可以容納300個寶箱,如果一下子生成300個,整個界面就會卡到爆炸,
這個組件的做法是就生成視圖可見的個數(shù),然后拖動的時候循環(huán)復用,
比如向下拖動,上面的item看不見了,就挪到下面復用。
lua層使用
/// <summary> /// 初始化循環(huán)滾動 /// </summary> /// <param name="loopItems">要生成的item列表</param> /// <param name="curIndex">第幾個item作為列表頂部</param> /// <param name="loopMax">循環(huán)列表生成最大個數(shù)</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組件
二、導出節(jié)點
三、lua層注冊調用接口InitLoop,初始化組件,注冊滑動事件
self.Scroll:InitLoop(childItems, 0, giftNum, handler(self, self.OnRefreshGiftItem),toTop)四、滑動事件回調會將現(xiàn)有item對象數(shù)據(jù)初始化,
并且在每次滑動的時候回調事件,初始化item,
回調傳回的參數(shù)是對象索引,所以需要我們記錄item對象列表:self._giftItems和item對應的數(shù)據(jù)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
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的unity循环滚动列表_【unity游戏开发】LoopScrollRect组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lda主题词评论python_Pytho
- 下一篇: pandas清华镜像_一款可以像操作Ex