當前位置:成語大全網 - 書法字典 - Unity UGUI實現遊戲關卡選擇界面

Unity UGUI實現遊戲關卡選擇界面

效果圖,材料是從網上隨便找來的。

這是運行後的層次界面,其中底部的項目放置在相機無法捕捉到的位置。作為預設,每個項目在網格上都有壹個切換組件和壹個切換組組件,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();

}

}

以上就是壹個簡單的遊戲關卡選擇界面的實現。如果有什麽錯誤,或者更好的方法,請指正。非常感謝!