Unity UGUI - Dropdown 下拉列表框


Dropdown 組件

該組件可以用來讓用戶選擇列表中的一個選項。

控件顯示當前選擇的選項。單擊后,它會打開選擇列表,可以在列表當中選擇一個新的選項。

選擇新的選項后,列表將再次關閉,並且控件將顯示新選擇的選項。

如果用戶單擊控件本身或者“畫布”中的其他任意位置,該列表也將關閉。

Template:(模板)

下拉列表模板的 Rect 轉換

Caption Text:(標題文字)

文本組件,用於保存當前所選選項的文本(可選)

Caption Image:(標題圖片)

Image組件,用於保存當前所選選項的圖像(可選)

Item Text:(項目文字)

用於保存項目文本的Text組件(可選)

Item Image:(項目圖片)

Image組件,用於保存項目的圖像(可選)

Value:(值)

當前所選選項的索引。0是第一個選項,1是第二個選項,依此類推。

Options:(選控件)

可選項的列表。可以為每個選項指定文本字符串和圖像。

該按鈕具有一個稱為 On Value Changed 的事件,該事件在用戶完成對列表中選項之一的單擊時響應,它支持發送整數值,該值便是所選選項的索引。

在模板中必須包含一個項目,並且要啟用 Toggle 組件。當單擊下拉控件創建實際的下拉列表時,此項會重復多次,並且列表中的每個選項都使用同一個副本。

設置文字和圖像內容

下拉菜單為每個選項提供了一個文本內容和一個圖像內容。文本和圖像都是可選的,僅在將下拉菜單設置為支持下拉菜單時才能使用它們。

如果同時設置了標題文本和項目文本屬性,則下拉菜單支持每個選項的文本。

使用 GameObject> UI> Dropdown 菜單項時,默認情況下會進行設置。

    • 標題文本是用於保存當前所選選項的文本的文本組件,它通常是 Dropdown GameObject 的子級

    • 項目文本是用於保存每個選項文本的文本組件,它通常是 Item GameObject 的子級

如果同時設置了標題圖像和項目圖像屬性,則該下拉菜單將為每個選項提供一個圖像。這些在默認情況下未設置。

    • 標題圖像是圖像組件,用於保存當前所選選項的圖像。它通常是Dropdown GameObject的子級

    • 項目圖像是圖像組件,用於保存每個選項的圖像。它通常是Item GameObject的子級

用於下拉菜單的實際文本和圖像是在下拉菜單組件的“選項”屬性中指定的,或者可以通過代碼進行設置。

下拉列表的位置

下拉列表相對於下拉控件的位置由模板 Rect 變換的錨點和樞紐決定。

默認情況下,該列表將顯示在控件下方,這是通過將模板錨定到控件的底部來實現的。

模板的樞軸也需要在頂部,以便隨着模板的擴展以容納可變數量的選項,它只會向下擴展。

Dropdown 控件具有簡單的邏輯,可以防止下拉列表顯示在 Canvas 的邊界之外,因為這將使某些選項無法選擇。

如果默認位置的下拉菜單不在 Canvas 矩形中,則其相對於控件的位置相反。

例如:在默認下方不足以顯示的情況下,該控件下方顯示的列表將會顯示在其上方。

但這種邏輯有一定的局限性:下拉模板的大小不得超過 Canvas 大小減去下拉控件的大小的一半,

否則,如果將下拉控件放在 Canvas 的中間,則在任一位置上可能都沒有列表顯示的空間。

實例運用

運用 Dropdown 下拉列表組件,在列表中選擇並改變場景中 Cube 的顏色。代碼如下:

 1     public Dropdown dropdown;
 2     public GameObject Cube;
 3     public Image image;
 4 
 5     void Update()
 6     {
 7         int values = dropdown.value;
 8         ChangeColor(values);
 9     }
10 
11     public void ChangeColor(int value)
12     {
13         switch (value)
14         {
15             case 0:
16                 Cube.GetComponent<MeshRenderer>().material.color = Color.blue;
17                 image.color = Color.blue;
18                 break;
19             case 1:
20                 Cube.GetComponent<MeshRenderer>().material.color = Color.green;
21                 image.color = Color.green;
22                 break;
23             case 2:
24                 Cube.GetComponent<MeshRenderer>().material.color = Color.red;
25                 image.color = Color.red;
26                 break;
27             case 3:
28                 Cube.GetComponent<MeshRenderer>().material.color = Color.white;
29                 image.color = Color.white;
30                 break;
31             case 4:
32                 Cube.GetComponent<MeshRenderer>().material.color = Color.yellow;
33                 image.color = Color.yellow;
34                 break;
35         }
36     }

實際效果:

 

 

 

 

 

*** |  以上內容僅為學習參考、學習筆記使用  | ***


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM