NGUI grid下面的item的重複利用

2022-03-23 15:47:36 字數 1514 閱讀 5671

解決的問題

使用grid放置item的時候,每次資料可能都不一樣,但是每次都刪除grid下面的節點,之後動態建立新的item是比較浪費的。

寫個簡單的工具函式,原理很簡單。

1、先獲得grid下面的可用item

2、根據data的大小進行初始化

3、每次在可用的item列表裡面獲取新的item,如果不夠用了,就建立新的item

4、disable掉沒用的item

附:每個grid下面預先要有乙個名字包含「template_」的模板item。這個模板不會被用,之前嘗試過把這個模板也當做乙個item正常使用,但是有些ngui的widget會出現bug。

[csharp] view plaincopy

using

unityengine;

using

system.collections.generic;

//qq group :333417608

public

class

uitools

else

nguitools.setactiveself (go,

true

);

return

go;

} static

public t getnewitemobj(listcanuselist, gameobject root, gameobject prefab) where

t : component

else

item.name = string.format("

", 0

);

nguitools.setactiveself (item.gameobject,

true

);

return

item;

} static

public listgetcanuseitemlist (gameobject root)

} return

itemlist;

} static

public listgetcanuseitemlist(gameobject root) where

t : component

} return

childrenlist;

} static

public

void unactiveunuseitem (listcanuselist)

} static

public

void unactiveunuseitem(listcanuselist) where

t : component

} static

private

bool

isnottemplategameobject(gameobject go)

return

result;

} }

分析下面的程式

includeint main 1 執行時會輸出什麼資訊?為什麼?答 會輸出 因為第一行十一字元形式輸出,所以會吧97和98當作相依字元的ascii值,輸出的時候按照字元顯示,第二行由於是以整形輸出,所以輸出對應整數值 2 如果將程式第4,5行改為 c1 197 c2 198 執行時會輸出什麼資訊?...

linux下面的軟體選擇

我自己用的一些linux軟體,就想起來這些,以後用什麼了再新增。1.瀏覽器 firefox 3.bbs客戶端 qterm 4.查詞 stardict 5.ftp客戶端 kftpgrabber lftp 6.bt客戶端 tran ission 8.中文輸入法 scim python 10.qq客戶端 ...

linux下面的tcp程式設計

首先要建立伺服器建立起socket,然後與本地的埠進行繫結,接著就開始接收客戶端的請求並建立與它的連線,接下來,客戶端傳送的訊息。tcpserver.c int main printf socket id d n sockfd 設定socket in 結構體中相關的引數 server sockadd...