這是運行後的層次界面,其中底部的項目放置在相機無法捕捉到的位置。作為預設,每個項目在網格上都有壹個切換組件和壹個切換組組件,Itme上切換組件中的組被設置為網格,這實現了在單擊壹個後,其他的將不會突出顯示。網格上有壹個組件網格布局組,在創建壹個項目並將父對象設置為網格時實現自動排版。
這裏,我們需要編寫三個類,壹個是我們自己編造的數據類,另壹個是獲取項目上各種ui的類,另壹個是可以創建和管理項目的類。
公共類ItemData//該類存儲數據。
{
public int _ starNum//星星的數量(我正在尋找星星,所以我現在就湊合壹下)
公共string _ icon//這是圖片的名稱
公共string _ itemName//檢查點的名稱
public string _ itemNum//什麽水平?
}
該項上的類用於獲取該項上的UI控件。
公共類項目:單行為
{?
public Image _ star 1;?
public Image _ star2?
公眾形象_ star3?
公共圖像_圖標;?
public Text _ levelNum?
public Text _ levelName?
void initializeItem()?
{ ?
_star1 =轉換。find(“star group/star 1“)。GetComponent<圖像& gt();
?_star2 =轉換。Find(“星組/星2“)。GetComponent<圖像& gt();?
_star3 =轉換。Find(“星組/星3”)。GetComponent<圖像& gt();
?_icon =轉換。查找(“圖標”)。GetComponent<圖像& gt();?
_levelName = transform。Find(“級別名/名稱“)。GetComponent<文本& gt();?
_levelNum =轉換。Find(“級別名/Lv“)。GetComponent<文本& gt();
}
void Awake()
{
initialize item();
}
}
這是壹個管理項目創建的類。
公共類MainMgr : MonoBehaviour?
{?
遊戲對象項目;?
轉換父對象;//這裏我們需要得到網格的變換。
列表& ltItemData & gtdataGroup =新列表& ltItemData & gt();
void Awake()?
{ ?
CreateData();?
item =轉換。查找(“項目”)。遊戲對象;//獲取開頭放置在攝像頭外的遊戲對象作為預設主體。
父級=轉換。find(“Grid“);//保存網格的轉換。
}?
void CreateData()//創建您自己的虛構數據。
{
?數據組。clear();//確保該列表沒有其他數據。
item data item data = new item data();?
itemdata。_ icon =“1(5)“;
Itemdata。_ itemName =“grove“;?
Itemdata。_itemNum =“第壹級“;?
itemdata。_ starNum = 3;?
數據組。add(item data);?
item data item data 1 = new item data();?
itemdata1。_ icon =“1(7)“;?
Itemdata1。_ itemName =“swamp“;
?Itemdata1。_itemNum =“第二層“;?
itemdata1。_ starNum = 1;?
數據組。add(item data 1);?
item data item data 2 = new item data();?
itemdata2。_ icon =“1(15)“;?
Itemdata2。_itemName =“山海關“;?
Itemdata2。_itemNum =“第三層“;
itemdata2。_ starNum = 1;?
數據組。add(item data 2);?
item data item data 3 = new item data();?
itemdata3。_ icon =“1(12)“;?
Itemdata3。_itemName =“墓地“;?
Itemdata3。_ itemNum =“Level 4“;?
itemdata3。_ starNum = 2;?
數據組。add(item data 3);
?item data item data 4 = new item data();?
項目數據4。_ icon =“1(32)“;?
項目數據4。_ itemName =“Temple“;
?項目數據4。_ itemNum =“level 5“;
?項目數據4。_ starNum = 3;?
數據組。add(item data 4);?
item data item data 5 = new item data();?
項目數據5。_ icon =“1(25)“;?
項目數據5。_itemName =“天堂“;?
項目數據5。_ itemNum =“level 6“;?
項目數據5。_ starNum = 2;?
數據組。add(item data 5);?
item data item data 6 = new item data();?
項目數據6。_ icon =“1(30)“;?
項目數據6。_ itemName =“demons“;?
項目數據6。_ itemNum =“level 7“;?
項目數據6。_ starNum = 3;?
數據組。add(item data 6);
?}?
GameObject tempItem//創建壹個臨時遊戲對象
void CreateTempItem()//創建項目
{ ?
if(data group!= null)?//當此列表不為空時
{ ?
for(int I = 0;我& lt數據組。數數;i++)//循環創建項
{ ?
tempItem =將(Item)實例化為GameObject?//創建項目並獲取該遊戲對象?
?temp item . transform . local position = vector 3 . zero;//初始化其位置、縮放大小和旋轉角度。
temp item . transform . local rotation = new四元數();?
temp item . transform . local scale = vector 3 . one;?
temp item . transform . set Parent(Parent);//將其父對象設置為Grid。
Item itemSprite = tempItem。add component();?//為每個創建的項目添加腳本。
itemSprite。_ level name . text = data group【I】。_ itemName//獲取每個級別的名稱,類似於下面這樣。
itemSprite。_ level num . text = data group【I】。_ itemNum
字符串路徑=字符串。格式(“Icon/{0}“,數據組【I】。_ icon);//字符串串聯
itemSprite。_icon.sprite = Resources。將(path,type of(Sprite))作為Sprite加載。
ShowStar(數據組【I】。_starNum,items prite);//調用此方法獲取星星的顯示。
}
}
}
void show star(int num,item tempitem)//此方法用於顯示星星。
{
if(num = = 1)
{
tempitem。_ star 1 . game object . set active(true);
tempitem。_ star 2 . game object . set active(false);
tempitem。_ star 3 . game object . set active(false);
}
如果(數量== 2)
{
tempitem。_ star 1 . game object . set active(true);
tempitem。_ star 2 . game object . set active(true);
tempitem。_ star 3 . game object . set active(false);
}
如果(數量== 3)
{
tempitem。_ star 1 . game object . set active(true);
tempitem。_ star 2 . game object . set active(true);
tempitem。_ star 3 . game object . set active(true);
}
}
void Start(){
CreateTempItem();
}
}
以上就是壹個簡單的遊戲關卡選擇界面的實現。如果有什麽錯誤,或者更好的方法,請指正。非常感謝!