Unity ScrollView實(shí)現(xiàn)動(dòng)態(tài)列表生成
制作根據(jù)實(shí)時(shí)獲取的數(shù)據(jù)動(dòng)態(tài)改變的列表,UGUI 的 Scroll View 已經(jīng)封裝好了基本的參數(shù),總結(jié)一些值得注意的地方和動(dòng)態(tài)生成列表的方法。
在 Canvas 創(chuàng)建 Scroll View 后,基本結(jié)構(gòu)如下。

一. 注意兩點(diǎn):
1. Content 下放自定義的列表內(nèi)容,如這個(gè) item 是名為“張三”的 Button 預(yù)制件。(制作為 Button 因?yàn)槲业捻?xiàng)目里需要點(diǎn)擊列表項(xiàng)產(chǎn)生交互結(jié)果)

2. 如果是頂部固定,往下依次延伸的列表,Content 和里邊自己的 item 中心錨點(diǎn)要一致,如下設(shè)置 Anchors 的參數(shù),錨點(diǎn)在Content 和 item 的頂部正中

二. 動(dòng)態(tài)生成列表
主要計(jì)算每個(gè)新生成的 item 的位置,以及根據(jù)總體 item 個(gè)數(shù)更新 Content 高度
public void onItemCreat( int _count )
{
//銷毀之前的生成的item,清除列表
for (int i = 1; i < itemList.Count;i++ )
{
DestroyImmediate(itemList[i]);
}
itemList.Clear();
//在 Content 里生成 _count 個(gè)item
if(_count > 0)
{
Item.SetActive(true); //第一個(gè)item實(shí)例已經(jīng)放在列表第一個(gè)位置,直接激活
itemList.Add(Item);
int i = 1;
while(i<_count)
{
GameObject a = GameObject.Instantiate(Item) as GameObject;
a.transform.parent = Content.transform; //設(shè)置為 Content 的子對(duì)象
itemList.Add(a);
RectTransform t = itemList[i - 1].GetComponent<RectTransform>(); //獲取前一個(gè) item 的位置
//當(dāng)前 item 位置放在在前一個(gè) item 下方
a.GetComponent<RectTransform>().localPosition =
new Vector3(t.localPosition.x, t.localPosition.y - t.rect.height, t.localPosition.z);
a.GetComponent<RectTransform>().localScale = new Vector3(1, 1, 1);
i++;
}
//根據(jù)當(dāng)前 item 個(gè)數(shù)更新 Content 高度
Content.GetComponent<RectTransform>().sizeDelta =
new Vector2(Content.GetComponent<RectTransform>().sizeDelta.x, itemList.Count * itemHeight);
}
else
{
Item.SetActive(false);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中利用斷點(diǎn)操作調(diào)試程序的步驟詳解
所謂斷點(diǎn)調(diào)試就是檢測(cè)執(zhí)行路徑和數(shù)據(jù)是否正確,中斷游戲運(yùn)行在線調(diào)試,下面這篇文章主要給大家介紹了關(guān)于C#中利用斷點(diǎn)操作調(diào)試程序的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
C# 編碼好習(xí)慣,獻(xiàn)給所有熱愛c#的同志
c#編寫者,需要培養(yǎng)的一些好習(xí)慣2009-02-02
C#基于百度AI實(shí)現(xiàn)機(jī)器翻譯功能
眾所周知,基于百度ai開發(fā)平臺(tái)我們可以實(shí)現(xiàn)了人臉識(shí)別、文字識(shí)別 、語音識(shí)別等功能。本文將介紹它的另一個(gè)功能,即實(shí)現(xiàn)機(jī)器翻譯,感興趣的可以了解一下2022-01-01
C#實(shí)現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C#中C/S端實(shí)現(xiàn)WebService服務(wù)
本文主要介紹了C#中C/S端實(shí)現(xiàn)WebService服務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
C#實(shí)現(xiàn)導(dǎo)出List數(shù)據(jù)到xml文件的方法【附demo源碼下載】
這篇文章主要介紹了C#實(shí)現(xiàn)導(dǎo)出List數(shù)據(jù)到xml文件的方法,涉及C#針對(duì)list類及xml文件的相關(guān)操作技巧,并附帶完整demo源碼供讀者下載參考,需要的朋友可以參考下2016-08-08

