UGUI(小地圖的實現(xiàn))與游戲關卡選擇的簡單實現(xiàn)

游戲中小地圖的實現(xiàn)(場景用簡單Cube組成先搭建如下圖場景味赃,真實場景實現(xiàn)方法也是一樣)


圖1-1小地圖效果圖

1.創(chuàng)建好場景后先添加一個攝像機鼠標右鍵出現(xiàn)如圖1-2所示選擇Camera就建好了一個攝像機


圖1-2

2.新建如圖1-5所示的Render Texture(紋理渲染)

圖1-3


3.選中攝像機在右邊出來的組件Camera中設置如圖1-4所示的Culling Mask屬性為Default


圖1-4

4.在將如圖1-4所示的Camera組件中的Projection 屬性設置為正交視圖(如圖1-5所示并調整好他的位置讓他的視圖對準要顯示的物體)

圖1-5

5.將第二步建的Render Texture(紋理渲染)拖到圖1-4所示組件的Taget Texture屬性中.

6.刪除圖1-4所示組件中Audio Listener屬性(不然運行起來會一直輸出東西)

7.加入一個Image右鍵UI --->Image并給該Image添加遮障如圖1-6所示添加遮障(Mask)

圖1-6

8.在該Image下添加一個RawImage組件把如圖1-3所建Render Texture(紋理渲染)拖在如圖1-7所示的Texture上(表示指向掩碼圖片)


圖1-7

9.為運動物體添加移動腳本實現(xiàn)物體移動就可以實現(xiàn)簡單的小地圖功能腳本內容如下

void Update () {

float h = Input.GetAxis("Horizontal");

float z = Input.GetAxis("Vertical");

transform.Translate(new Vector3(h, 0, z) * 6);//speed為速度

}

游戲關卡選擇的簡單實現(xiàn)

效果圖如圖2-1所示


圖2-1

布局層次如圖2-2所示

Seal:背景圖片

Grid:控制顯示出來的網(wǎng)格布局

Title:顯示關卡選則界面

LeverItem:Image組件控制點擊后實現(xiàn)高亮狀態(tài)

Icon:顯示圖片

startGrid:顯示小紅點(下面的start1分別表示三個)

LeverInfo:關卡名字與關卡數(shù)

圖2-2

1.添加一個一個Image作為背景圖(Seal 顯示背景顏色)

2.在背景圖下面添加一個空物體(Grid)控制顯示出來的關卡圖片布局所以添加Grid Layout Group組件與Toggle Group組件(控制選中后高亮狀態(tài)只有一張會亮似谁,其他為暗)如圖2-3所示


圖2-3

3.添加一個Image控件 :LeverItem來控制顯示單個關卡的圖片狀態(tài)的切換宪躯,高亮狀態(tài)(nomal_BG)與非高亮狀態(tài)(Hight_side)渠退,就是添加倆個Image背景分別設為暗一點與亮一點就行

在添加一張圖片(Icon)背景為顯示關卡的圖片尺寸比那倆張圖片要小一點

為LeverItem添加Toggle組件(圖2-4)

在(1)處拉入LeverItem

在(2)處拉入當前默認的非高亮狀態(tài)

在(3)處拉入Gird

在腳本中可以通過Is On來控制倆種狀態(tài)的切換


圖2-4

4.startGrid與LeverInfo就是設置一下關卡與名字的顯示布局與星級的顯示布局

腳本實現(xiàn)

using UnityEngine;

using System.Collections;

using UnityEngine.UI;

using UnityEngine.SceneManagement;

using System.Collections.Generic;

public class shijianbuju : MonoBehaviour {? ?

?Canvas _mainCanvas;? ??

AsyncOperation _state;?

?? SelctLeverIUI _guankaid; ??

?? void Start () {? ??

? ? CreatLeverItem();? ?

?? ? ? ? }? ??

public int level_id;//關卡ID? ?

?Transform _ItemPareten;? ??

GameObject _leverIItem;??

? ListdataGruop = new List();??

? public void Awake()? ? {??

? ? ? CreatTempData();? ? ??

? DontDestroyOnLoad(gameObject);//不銷毀物體在場景加載的時候盈魁,或切換時? ? ??

? ? ? ? ? _ItemPareten = transform.Find("Seal/Grid");? ??

? ? _leverIItem = transform.Find("Seal/LeverItem").gameObject;? ? }? ?

?//創(chuàng)建臨時數(shù)據(jù)? ?

?void CreatTempData()? ? {??

? ? ? dataGruop.Clear();? ??

? ? LeveIData leveldata = new LeveIData();??

? ? ? leveldata.level_id = 1;? ? ?

?? leveldata._levelName = "小樹林";? ??

? ? leveldata._Nolevel = 1;? ? ? ?

?leveldata._starNum = 3;? ? ??

? leveldata._IconRes = "1 (1)";??

? ? ? dataGruop.Add(leveldata);? ? ??

? LeveIData leveldata1 = new LeveIData();? ?

?? ? leveldata1.level_id = 2; ?

?? ? leveldata1._levelName = "土地廟";??

? ? ? leveldata1._Nolevel = 2;? ? ? ?

?leveldata1._starNum = 2;? ? ??

? leveldata1._IconRes = "1 (2)";? ??

? ? dataGruop.Add(leveldata1);? ? ?

?? LeveIData leveldata2 = new LeveIData();? ? ? ?

?leveldata2.level_id = 3;? ??

? ? leveldata2._levelName = "神仙閣";? ?

?? ? leveldata2._Nolevel = 3;? ? ?

?? leveldata2._starNum = 3;? ? ??

? leveldata2._IconRes = "1 (3)";? ?

?? ? dataGruop.Add(leveldata2);? ??

? ? LeveIData leveldata3 = new LeveIData();?

?? ? ? leveldata3.level_id = 4;? ?

?? ? leveldata3._levelName = "少林寺";? ?

?? ? leveldata3._Nolevel = 4;? ?

?? ? leveldata3._starNum = 1;? ? ?

?? leveldata3._IconRes = "1 (4)";? ? ?

?? dataGruop.Add(leveldata3);?

?? ? ? LeveIData leveldata4 = new LeveIData();??

? ? ? leveldata4.level_id = 5;? ? ?

?? leveldata4._levelName = "黑木崖";??

? ? ? leveldata4._Nolevel = 5;? ? ??

? leveldata4._starNum = 3;? ? ??

? leveldata4._IconRes = "1 (5)";? ? ? ?

?dataGruop.Add(leveldata4);? ? }?

?? //根據(jù)數(shù)據(jù)創(chuàng)建關卡??

? GameObject _tempItem;? ??

void CreatLeverItem()? ? {? ?

?? ? if (dataGruop.Count > 0)? ? ? ? {??

? ? ? ? ? for (int i = 0; i < dataGruop.Count; i++)? ??

? ? ? ? {? ? ? ? ? ?

?? ? _tempItem = Instantiate(_leverIItem) as GameObject;? ? ? ? ? ? ? ? _tempItem.transform.SetParent(_ItemPareten);? ??

? ? ? ? ? ? _tempItem.transform.localPosition = Vector3.zero;

? ? ? ? ? ? ? ? _tempItem.transform.localScale = Vector3.one;? ??

? ? ? ? ? ? _tempItem.transform.localRotation = new Quaternion();? ? ? ?

?? ? ? ? //處理數(shù)據(jù)? ? ? ? ? ??

? ? LeverItem _InstItem = _tempItem.AddComponent();? ?

?? ? ? ? ? ? _InstItem.InstValue(dataGruop[i].level_id);? ?

?? ? ? ? ? ? _InstItem._name.text = dataGruop[i]._levelName;?

?? ? ? ? ? ? ? _InstItem._NoLevel.text = dataGruop[i]._Nolevel.ToString();? ? ?

?? ? ? ? ? string path = string.Format("{0}{1}", "Icon/", dataGruop[i]._IconRes);? ?

?? ? ? ? ? ? _InstItem._icon.sprite = Resources.Load(path, typeof(Sprite)) as Sprite;? ? ? ? ? ? ? ? ShowStar(dataGruop[i]._starNum, _InstItem);? ? ? ??

? ? ? ? //增加監(jiān)聽? ? ? ? ? ? ? ??

_tempItem.GetComponent().onValueChanged.AddListener(delegate (bool ischange) { OntoggleChngeFunc(ischange, _InstItem); });

}

}

}

void OntoggleChngeFunc(bool ison, LeverItem item)

{

if (ison)

{

// Debug.Log("my level_id=" + item.level_id);

SceneManager.LoadScene(item.level_id);

}

}

void ShowStar(int num, LeverItem item)

{

if (num == 1)

{

item._star_one.gameObject.SetActive(true);

item._star_two.gameObject.SetActive(false);

item._star_thr.gameObject.SetActive(false);

}

else if (num == 2)

{

item._star_one.gameObject.SetActive(true);

item._star_two.gameObject.SetActive(true);

item._star_thr.gameObject.SetActive(false);

}

else if (num == 3)

{

item._star_one.gameObject.SetActive(true);

item._star_two.gameObject.SetActive(true);

item._star_thr.gameObject.SetActive(true);

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末乡范,一起剝皮案震驚了整個濱河市裁眯,隨后出現(xiàn)的幾起案子偎捎,更是在濱河造成了極大的恐慌蠢终,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茴她,死亡現(xiàn)場離奇詭異寻拂,居然都是意外死亡,警方通過查閱死者的電腦和手機丈牢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門祭钉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人己沛,你說我怎么就攤上這事慌核。” “怎么了申尼?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵垮卓,是天一觀的道長。 經(jīng)常有香客問我师幕,道長扒接,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任们衙,我火速辦了婚禮钾怔,結果婚禮上,老公的妹妹穿的比我還像新娘蒙挑。我一直安慰自己宗侦,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布忆蚀。 她就那樣靜靜地躺著矾利,像睡著了一般。 火紅的嫁衣襯著肌膚如雪馋袜。 梳的紋絲不亂的頭發(fā)上男旗,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音欣鳖,去河邊找鬼察皇。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的什荣。 我是一名探鬼主播矾缓,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稻爬!你這毒婦竟也來了嗜闻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤桅锄,失蹤者是張志新(化名)和其女友劉穎琉雳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體友瘤,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡翠肘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了商佑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡厢塘,死狀恐怖茶没,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情晚碾,我是刑警寧澤抓半,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站格嘁,受9級特大地震影響笛求,放射性物質發(fā)生泄漏。R本人自食惡果不足惜糕簿,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一探入、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧懂诗,春花似錦蜂嗽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至离唐,卻和暖如春病附,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亥鬓。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工完沪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嵌戈。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓丽焊,卻偏偏與公主長得像较剃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子技健,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內容

  • 效果圖,素材是網(wǎng)上隨便拉的 這是運行后的Hierarchy的界面,其中最下面的Item是放在攝像機不能拍到的位置,...
    Unity學習的路上閱讀 6,273評論 1 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理写穴,服務發(fā)現(xiàn),斷路器雌贱,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 《計算機游戲開發(fā)》 期末課題實驗報告 姓名:李基銘 班級:2014211602 學號:2014212123 指導教...
    LunarShade閱讀 717評論 0 0
  • 車載臺是指能安裝在車輛啊送、船舶、飛機等交通工具上欣孤,直接由外部電源供電的馋没,并使用外部天線的無線電對講機。中文名車載臺用...
    mediphe閱讀 361評論 0 1