【Unity3d游戲開發】UGUI插件入門之游戲菜單


  ugui是unity4.6開始加入的一個新的ui系統,非常強大,下面我們將通過一系列博客的方式一起來學習一下ugui的使用。本篇博客會介紹如何使用ugui制作一個游戲菜單,並且了解如何讓物體與ugui的控件交互,效果圖如下:

 

  首先還是新建一個unity工程,並且新建一個場景,然后新建一個Canvas畫布,我們所有的ui控件,都是要建立在Canvas上面的。然后在Canvas下面建立一個button重命名為StartButton,並調節成效果圖中的樣式。然后再復制兩份出來,把他們放置到如效果圖的位置,調節他們的文字和顏色,大小等。

  接着在Canvas下面新建一個Toggle,它類似於checkbox的功能。將它設置為效果圖的樣式。然后在新建一個Slider,設置它的參數如效果圖所示:

 

  接下來我們要設計出游戲的公告欄面板,它是由三個image,2個text,一個scrollbar組成的。

  

  首先還是新建一個image,並將它重命名為Note,設置它的大小如效果圖所示,然后在它的下面再新建一個image並命名為TitileBG,將它設置為紫色,並且放到Note的頂部位置,然后在TitileBG下面新建一個text,將內容設置為公告欄,然后繼續在Note的下面新建一個image,將它命名為Content,用它來承載我們的公告內容。然后在Content的下面新建一個text,然后給text賦值上一段比較長的文字內容,將text拉長以顯示全部的文字內容。為了讓文字具有滾動的功能,我們要為Content加上一個Scroll Rect,只勾選Vertical以便讓文字只能垂直方向移動,並將content屬性設置為text文字,這樣就具備了滾動的功能了。為了讓多余的部分不顯示出來,我們需要為Content添加一個mask組件。

接着讓我們為公告欄設計一個滑塊,在Note下面新建一個Scroll Bar,將他的Direction設置為Bottom to Top,然后將Content中的Vertical ScrollBar屬性設置為我們剛建立的這個ScrollBar。

 

 

 

 

 

 

 

 

 

  為了方便,我們新建一個空物體來掛載腳本,新建一個空物體,命名為GameManager,然后為它掛載一個腳本,代碼如下:

 1 /*
 2 ProjectName: UGUI之游戲菜單
 3 Author: 馬三小伙兒
 4 Blog: http://www.cnblogs.com/msxh/
 5 Github:https://github.com/XINCGer
 6 Date: 2016/09/14
 7 */
 8 using UnityEngine;
 9 using System.Collections;
10 
11 public class GameManager : MonoBehaviour {
12 
13     // Use this for initialization
14     void Start () {
15     
16     }
17     
18     // Update is called once per frame
19     void Update () {
20     
21     }
22 
23     public void OnStartGame(string sceneName){
24         Application.LoadLevel (sceneName);
25     }
26     public void OnStartGame(int sceneIndex){
27         Application.LoadLevel (sceneIndex);
28     }
29 }
View Code

  里面只有一個重載的OnStartGame函數,用它來加載新的場景。將這OnStartGame函數綁定到StartButton的OnClikc事件上面,然后將參數設置為"Game"(下一個場景的名字),運行預覽,點擊開始游戲即可跳轉到Game場景了。

  在Game場景中主要的部分只有一個Cube(已重命名為Player)和一個Slider,我們將用他們來學習控制是如何交互的。為Player添加一個腳本,代碼如下:

 1 /*
 2 ProjectName: UGUI之游戲菜單
 3 Author: 馬三小伙兒
 4 Blog: http://www.cnblogs.com/msxh/
 5 Github:https://github.com/XINCGer
 6 Date: 2016/09/14
 7 */
 8 using UnityEngine;
 9 using System.Collections;
10 
11 public class Player : MonoBehaviour {
12 
13     public float speed=90f;
14     // Use this for initialization
15     void Start () {
16     
17     }
18     
19     // Update is called once per frame
20     void Update () {
21         transform.Rotate (Vector3.forward*Time.deltaTime*speed);
22     }
23 
24     public void ChangeSpeed(float newSpeed){
25         speed = newSpeed;
26     }
27 }
View Code

  這個腳本可以控制Cube的旋轉速度,里面有一個ChangeSpeed函數,用來來改變速度。接着將Slider的OnValueChanged事件賦值為ChangeSpeed函數,這樣Slider在滑動時就會通知ChangeSpeed函數去更改speed,Cube的旋轉速度也就隨之而改變了。

  

  本篇博客的工程已經同步到github:https://github.com/XINCGer/Unity3DTraining/tree/master/UGUITraining/UGUIDemo01

 

 

作者:馬三小伙兒
出處:http://www.cnblogs.com/msxh/p/5921776.html 
請尊重別人的勞動成果,讓分享成為一種美德,歡迎轉載。另外,文章在表述和代碼方面如有不妥之處,歡迎批評指正。留下你的腳印,歡迎評論!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM