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