當前位置:遊戲中心平台 - 手遊助手 - Unity UGUI實現遊戲關卡選擇界面

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

效果圖,素材是網上隨便拉的。

這是運行後的層次界面,最下面的項目放在攝像頭拍不到的地方。作為預置,每個項目在網格上都有壹個Toggle組件和壹個Toggle Group組件,Itme上的Toggle組件中的Group設置為Grid,實現了點擊壹個後,其他的都不會高亮顯示。網格上有壹個組件網格布局組,實現了創建壹個項目,將父對象設置為網格時的自動排版。

在這裏,我們需要編寫三個類,壹個是我們自己虛構的數據類,壹個是獲取項目上各種ui的類,壹個是可以創建和管理項目的類。

公共類ItemData//這個類存儲數據。

{

public int _ starNum//星星的數量(我在找星星,所以現在就湊合吧)

公共string _ icon//這是圖片的名稱

公共string _ itemName//檢查點的名稱

public string _ itemNum//什麽水平?

}

該項上的類用於獲取該項上的UI控件。

公共類項目:MonoBehaviour

{?

公眾形象_ star 1;?

公眾形象_ star2?

公眾形象_ star3?

公共圖像_圖標;?

public Text _ levelNum?

public Text _ levelName?

void initializeItem()?

{ ?

_star1 =轉換。Find("StarGroup/star1 ")。GetComponent & ltImage & gt();

?_star2 =轉換。Find("StarGroup/star2 ")。GetComponent & ltImage & gt();?

_star3 =轉換。Find("StarGroup/star3 ")。GetComponent & ltImage & gt();

?_icon =轉換。查找(“圖標”)。GetComponent & ltImage & gt();?

_levelName = transform。Find("級別名/名稱")。GetComponent & ltText & gt();?

_levelNum =轉換。Find("Levelname/Lv ")。GetComponent & ltText & gt();

}

void Awake()

{

initialize item();

}

}

這是壹個管理項目創建的類。

公共類MainMgr : MonoBehaviour?

{?

遊戲對象項目;?

轉換父項;//我們需要得到網格的變換。

列表& ltItemData & gtdataGroup =新列表& ltItemData & gt();

void Awake()?

{ ?

CreateData();?

item =轉換。查找(“項目”)。遊戲對象;//獲取開頭放置在攝像頭外的遊戲對象作為預設體。

父=轉換。Find(“網格”);//保存網格的轉換。

}?

Void CreateData() //創建自己的虛構數據。

{

?數據組。clear();//確保該列表沒有其他數據。

ItemData ItemData = new ItemData();?

itemdata。_ icon = " 1(5)";

Itemdata。_ itemName = " grove?

Itemdata。_itemNum = "第壹級";?

itemdata。_ star num = 3;?

數據組。add(item data);?

item data item data 1 = new item data();?

itemdata1。_ icon = " 1(7)";?

Itemdata1。_ itemName = " swamp

?Itemdata1。_itemNum = "第二級";?

itemdata1。_ star num = 1;?

數據組。add(item data 1);?

item data item data 2 = new item data();?

項目數據2。_ icon = " 1(15)";?

項目數據2。_itemName = "山海關";?

項目數據2。_itemNum = "第三級";

項目數據2。_ star num = 1;?

數據組。add(item data 2);?

item data item data 3 = new item data();?

itemdata3。_ icon = " 1(12)";?

Itemdata3。_itemName = "墓地";?

Itemdata3。_ itemNum = " Level 4?

itemdata3。_ star num = 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。_ star num = 3;?

數據組。add(item data 4);?

item data item data 5 = new item data();?

項目數據5。_ icon = " 1(25)";?

項目數據5。_itemName = "天堂";?

項目數據5。_ itemNum = " level 6?

項目數據5。_ star num = 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。_ star num = 3;?

數據組。add(item data 6);

?}?

GameObject tempItem//創建壹個臨時遊戲對象

Void CreateTempItem() //創建項目

{ ?

if (dataGroup!= 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。_levelName.text = dataGroup[i]。_ itemName//獲取每壹級的名稱,類似於下面。

itemSprite。_levelNum.text = dataGroup[i]。_ itemNum

字符串路徑=字符串。格式(" Icon/{0} ",數據組[i]。_ icon);//字符串串聯

itemSprite。_icon.sprite = Resources。將(path,typeof(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();

}

}

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

  • 上一篇:桃花源,我目前的固定團隊:兩個英雄,戰魂,藥師,陰陽。69j都是身懷絕技的萬人戰機。在交叉服務中,
  • 下一篇:提高華手機遊戲戰鬥力的方法
  • copyright 2024遊戲中心平台