天天看點

Unity的ScrollView無限循環滾動前言

前言

此篇文章當作知識學習即可,需要使用循環複用的小夥伴可以嘗試部落客近期開發的ScrollCircleMaker v1.0,此插件功能比較完整,使用友善,如果遇到問題可以聯系我進行修改。

當ScrollView下的物體很多上百上千的時候,不可能去執行個體化出來這麼多物體,這個時候需要優化了,不然drawcall會很大很大 ,是以筆者花了1,2天時間去寫了一個比較實用的工具,那就是ScrollView無限循環滾動,接下來給大家展示一下效果(剪掉了一些幀數因為太大上傳不了,實際效果更加絲滑),如下:

Unity的ScrollView無限循環滾動前言

 自我感覺寫的還是比較完善的,item樣式重新整理和點選事件的注冊等等的基本功能,支援4個方向的無限滾動的,自适應Content大小進行布局,下面是使用的教程和設計的基本思路,最下面也将附上Demo工程的下載下傳路徑。

Unity的ScrollView無限循環滾動前言

需要在Content下添加GridLayoutGroup,代碼會讀取GridLayoutGroup下的一些參數,然後會把GridLayoutGroup元件禁用掉,美術可以設定GridLayoutGroup的參數去檢視無限滾動的預期效果,接下來和大家講解一下設計的思路和一些代碼的片段, 首先需要計算可顯示區域行列最大值是多少,如果上下滾動的話,計算出來最大行還需要加1,這樣子最大行*最大列就是需要初始化的item個數,當然需要把所有的item資料存在List<object>下用來重新整理item,是以初始化這個工具類需要做這些事情,如圖下:

Unity的ScrollView無限循環滾動前言

可以看到這裡還将一個函數傳遞進去,這個Text類是繼承了ItemBase這個抽象類,一個Item将對應上一個Text的執行個體,執行個體化一個Item的時候就調用一下傳遞進去的委托建立一個Text執行個體對應上,初始化顯示的時候按順序調用ItemBase的函數,如圖下:

Unity的ScrollView無限循環滾動前言

 之後就是重新整理的問題(這裡就單單講從上到下顯示的重新整理,其他都差不多),重新整理需要先監聽ScollView的拖動,是以如圖下:

Unity的ScrollView無限循環滾動前言

重新整理的思路是如果向下移動的時候,第一行完全被覆寫了,這樣就把第一行重新整理到最下面的一行,改變位置和調用UpdaView改變Item樣式,以此循環,向上重新整理的時候第一行間距大于縱向間距,将最後的一行重新整理到最前面的一行,接下展示一下代碼的片段,如圖下:

Unity的ScrollView無限循環滾動前言

工程的下載下傳連結:https://download.csdn.net/download/m0_37920739/11186683

繼續閱讀