UGUI开发实例练习——游戏菜单
生活随笔
收集整理的這篇文章主要介紹了
UGUI开发实例练习——游戏菜单
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
自我感覺把,前幾篇寫的一些簡單東西,并不能夠很好的涉及到開發(fā)中各種控件的配合,想著接下來用實(shí)例的方式自己邊學(xué)邊做,這樣我對NGUI的使用才會(huì)更熟練并且也有更多的東西與大家討論。
所以接下來的文章我想開始我的實(shí)例操練——游戲菜單以及菜單的切換;
一、游戲UI的初步設(shè)計(jì) 在實(shí)現(xiàn)UI前,先設(shè)計(jì)一下UI的快速原型吧。(用Visio做的圓形,因?yàn)橹恍枳鳛閰⒖季筒挥肁xureRP來做了) 設(shè)置的界面 比較簡單不要介意哈,只要功能實(shí)現(xiàn)都是貼圖的事,不慌,問題不大!! 二、開始實(shí)現(xiàn) 好了,這是我根據(jù)快速原型先整出來的界面 ,接下來給每個(gè)空間添加對應(yīng)的功能; 1.首先,給sprite都attach一個(gè)BoxCollider(注意哦,lable可加可不加,但是按照這個(gè)設(shè)計(jì)是不用加的,因?yàn)槿绻恿?#xff0c;鼠標(biāo)有時(shí)點(diǎn)到的BoxCollider是Label,就可能會(huì)妨礙Sprite之后添加的ButtonScript腳本的功能),然后右鍵sprite控件然后Attach一個(gè)ButtonScript腳本,就大功告成。如下圖:(是StartButton添加的腳本) 兩個(gè)PlaySound的腳本就很容易了,兩個(gè)的Trigger各不同,一個(gè)是On Mouse Over,就是鼠標(biāo)經(jīng)過按鈕時(shí)的聲音;OnClick就是鼠標(biāo)點(diǎn)擊時(shí)的聲音;這里用了我這個(gè)版本NGUI內(nèi)置的聲音; 2.好了,把能交互的設(shè)置好了,就該實(shí)現(xiàn)交互的內(nèi)容了,從"開始游戲出發(fā)"; 開始游戲在這里的設(shè)計(jì)效果是這樣的:點(diǎn)擊“開始游戲”,然后有一個(gè)加載的界面,之后就是游戲場景(比較簡單) 那如何響應(yīng)點(diǎn)擊產(chǎn)生的這個(gè)事件呢?在“ButtonScript”腳本中有一個(gè)“On Click”下,有一個(gè)Notify,后面可以拖拽進(jìn)去一個(gè)游戲物體,拖進(jìn)去后會(huì)展開,然后選擇該游戲物體上的某個(gè)腳本的事件就行;
在這里我們把場景切換的腳本掛在MainCamera public class startGame : MonoBehaviour {[HideInInspector]public AsyncOperation asyncLoad;public TweenPosition MenuUITween;public TweenPosition LoadUITween;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}IEnumerator loadScene(){asyncLoad= SceneManager.LoadSceneAsync(1,LoadSceneMode.Single);yield return asyncLoad;}public void EnterGame(){StartCoroutine(loadScene());MenuUITween.PlayForward();//播放主菜單界面移除動(dòng)畫LoadUITween.PlayForward();//加載界面的出現(xiàn)動(dòng)畫}}
這是我在加載場景時(shí)的過渡 在菜單到游戲場景的切換,我們可以用協(xié)同程序來進(jìn)行,Unity的UnityEngine.SceneManagement這個(gè)命名空間中,提供了一個(gè)加載場景并可以得到加載進(jìn)度的API,就是
有兩個(gè)重載,區(qū)別在于第一個(gè)參數(shù),這個(gè)參數(shù)指定對應(yīng)場景,第一個(gè)是場景的名字,第二個(gè)是場景的索引,那么問題來了,索引是從何而來? 我們需要把所需要的場景放進(jìn)這里面:(在File->buildSettings或者快捷鍵ctrl+shift+B),場景后面對應(yīng)的數(shù)字就是索引了; 接著講場景加載的API,返回的AsyncOperation變量中有好幾個(gè)屬性,具體可以查看Unity官方API文檔 progress是一個(gè)從0到1的float數(shù)據(jù),完全可以用進(jìn)度條給顯示出來,所以我們再添加一個(gè)進(jìn)度條的UI,如圖所示
LoadUITween.PlayForward();//加載界面的出現(xiàn)動(dòng)畫 這是我掛在MenuUI和LoadingUI的兩個(gè)動(dòng)畫腳本 ,動(dòng)畫要怎么切換就根據(jù)大家的需要,我做的效果是直接切換,而且注意這個(gè)腳本是沒有勾上的,因?yàn)槲覀円婚_始并不希望他們就起作用,需要我們點(diǎn)擊開始游戲才發(fā)揮作用,所以用PlayForward()方法就可以讓他起作用了。 效果展示: 開始運(yùn)行 接著點(diǎn)擊開始游戲 場景加載中 場景 上面那個(gè)Button是我為了方便弄的返回菜單的功能,實(shí)現(xiàn)和切換場景的方法大同小異; 接下來完場設(shè)置界面的顯示以及參數(shù)調(diào)整; 下圖是我根據(jù)原型再次優(yōu)化的界面效果
一、游戲UI的初步設(shè)計(jì) 在實(shí)現(xiàn)UI前,先設(shè)計(jì)一下UI的快速原型吧。(用Visio做的圓形,因?yàn)橹恍枳鳛閰⒖季筒挥肁xureRP來做了) 設(shè)置的界面 比較簡單不要介意哈,只要功能實(shí)現(xiàn)都是貼圖的事,不慌,問題不大!! 二、開始實(shí)現(xiàn) 好了,這是我根據(jù)快速原型先整出來的界面 ,接下來給每個(gè)空間添加對應(yīng)的功能; 1.首先,給sprite都attach一個(gè)BoxCollider(注意哦,lable可加可不加,但是按照這個(gè)設(shè)計(jì)是不用加的,因?yàn)槿绻恿?#xff0c;鼠標(biāo)有時(shí)點(diǎn)到的BoxCollider是Label,就可能會(huì)妨礙Sprite之后添加的ButtonScript腳本的功能),然后右鍵sprite控件然后Attach一個(gè)ButtonScript腳本,就大功告成。如下圖:(是StartButton添加的腳本) 兩個(gè)PlaySound的腳本就很容易了,兩個(gè)的Trigger各不同,一個(gè)是On Mouse Over,就是鼠標(biāo)經(jīng)過按鈕時(shí)的聲音;OnClick就是鼠標(biāo)點(diǎn)擊時(shí)的聲音;這里用了我這個(gè)版本NGUI內(nèi)置的聲音; 2.好了,把能交互的設(shè)置好了,就該實(shí)現(xiàn)交互的內(nèi)容了,從"開始游戲出發(fā)"; 開始游戲在這里的設(shè)計(jì)效果是這樣的:點(diǎn)擊“開始游戲”,然后有一個(gè)加載的界面,之后就是游戲場景(比較簡單) 那如何響應(yīng)點(diǎn)擊產(chǎn)生的這個(gè)事件呢?在“ButtonScript”腳本中有一個(gè)“On Click”下,有一個(gè)Notify,后面可以拖拽進(jìn)去一個(gè)游戲物體,拖進(jìn)去后會(huì)展開,然后選擇該游戲物體上的某個(gè)腳本的事件就行;
在這里我們把場景切換的腳本掛在MainCamera public class startGame : MonoBehaviour {[HideInInspector]public AsyncOperation asyncLoad;public TweenPosition MenuUITween;public TweenPosition LoadUITween;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}IEnumerator loadScene(){asyncLoad= SceneManager.LoadSceneAsync(1,LoadSceneMode.Single);yield return asyncLoad;}public void EnterGame(){StartCoroutine(loadScene());MenuUITween.PlayForward();//播放主菜單界面移除動(dòng)畫LoadUITween.PlayForward();//加載界面的出現(xiàn)動(dòng)畫}}
這是我在加載場景時(shí)的過渡 在菜單到游戲場景的切換,我們可以用協(xié)同程序來進(jìn)行,Unity的UnityEngine.SceneManagement這個(gè)命名空間中,提供了一個(gè)加載場景并可以得到加載進(jìn)度的API,就是
public static AsyncOperation LoadSceneAsync(string sceneName,SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
public static AsyncOperation LoadSceneAsync(int sceneBuildIndex,SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);有兩個(gè)重載,區(qū)別在于第一個(gè)參數(shù),這個(gè)參數(shù)指定對應(yīng)場景,第一個(gè)是場景的名字,第二個(gè)是場景的索引,那么問題來了,索引是從何而來? 我們需要把所需要的場景放進(jìn)這里面:(在File->buildSettings或者快捷鍵ctrl+shift+B),場景后面對應(yīng)的數(shù)字就是索引了; 接著講場景加載的API,返回的AsyncOperation變量中有好幾個(gè)屬性,具體可以查看Unity官方API文檔 progress是一個(gè)從0到1的float數(shù)據(jù),完全可以用進(jìn)度條給顯示出來,所以我們再添加一個(gè)進(jìn)度條的UI,如圖所示
LoadUITween.PlayForward();//加載界面的出現(xiàn)動(dòng)畫 這是我掛在MenuUI和LoadingUI的兩個(gè)動(dòng)畫腳本 ,動(dòng)畫要怎么切換就根據(jù)大家的需要,我做的效果是直接切換,而且注意這個(gè)腳本是沒有勾上的,因?yàn)槲覀円婚_始并不希望他們就起作用,需要我們點(diǎn)擊開始游戲才發(fā)揮作用,所以用PlayForward()方法就可以讓他起作用了。 效果展示: 開始運(yùn)行 接著點(diǎn)擊開始游戲 場景加載中 場景 上面那個(gè)Button是我為了方便弄的返回菜單的功能,實(shí)現(xiàn)和切換場景的方法大同小異; 接下來完場設(shè)置界面的顯示以及參數(shù)調(diào)整; 下圖是我根據(jù)原型再次優(yōu)化的界面效果
總結(jié)
以上是生活随笔為你收集整理的UGUI开发实例练习——游戏菜单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员的故事 001 小眼镜入职
- 下一篇: java netbeans 控制台乱码_