unity3d實戰專案——拯救大兵1:介面設計之場景部署
第一部分:介面設計
一、新建場景,部署資源
1、新建專案。
2、在專案面板(project)中,新建Resources、sounds、scripts、scenes四個目錄,並在Resources下面新建一個名為Textures子目錄。
3、從網上下載專案資源(共包括12個檔案,10張圖片+1個聲音+1個指令碼),下載網址為:https://download.csdn.net/download/zslsir/10701641。將從網上下載的壓縮檔案下載,解壓後,將聲音檔案a.mp3放入sounds目錄中、將指令碼檔案Menu.cs放入scripts目錄中,將其他的10張圖片放入Resoures\Textures目錄中。
4、另存為當前場景到scenes中,並命名為start。
Menu.cs程式碼如下:
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement;
public class Menu : MonoBehaviour { //遊戲介面狀態機 //主選單介面 public const int STATE_MAINMENU = 0; //開始遊戲介面 public const int STATE_STARTGAME = 1; //遊戲設定介面 public const int STATE_OPTION = 2; //遊戲幫助介面 public const int STATE_HELP = 3; //遊戲退出介面 public const int STATE_EXIT = 4; //GUI面板 public GUISkin mySkin; //遊戲背景貼圖 public Texture textureBG; //開始選單截圖 public Texture tex_startInfo; //幫助選單貼圖 public Texture tex_helpInfo; //遊戲音樂資源 public AudioSource music; //當前遊戲狀態 private int gameState; void Start () { //初始化遊戲狀態為:主選單介面 gameState = STATE_MAINMENU; //設定滑鼠顯示 Cursor.visible = true; } void OnGUI() { switch(gameState) { case STATE_MAINMENU: //繪製主選單介面 RenderMainMenu(); break; case STATE_STARTGAME: //繪製遊戲開始介面 RenderStart(); break; case STATE_OPTION: //繪製遊戲設定介面 RenderOption(); break; case STATE_HELP: //繪製遊戲幫助介面 RenderHelp(); break; case STATE_EXIT: //繪製遊戲退出介面 //目前直接關閉退出遊戲 break; }
} //繪製主選單介面 void RenderMainMenu() { //設定介面面板 GUI.skin = mySkin; //繪製遊戲背景圖 GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),textureBG); //開始遊戲按鈕 if(GUI.Button(new Rect (0,30,623,153),"","start")) { //進入開始遊戲狀態 //目前由於是測試階段 //後期會在這裡重新載入新的遊戲場景 gameState = STATE_STARTGAME; //Application.LoadLevel ("Scene_Game"); //SceneManager.LoadScene("Scene_Game"); } //遊戲設定按鈕 if(GUI.Button(new Rect (0,180,623,153),"","option")) { //進入開始遊戲狀態 gameState = STATE_OPTION; } //遊戲幫助按鈕 if(GUI.Button(new Rect (0,320,623,153),"","help")) { //進入遊戲幫助狀態 gameState = STATE_HELP; } //遊戲退出按鈕 if(GUI.Button(new Rect (0,470,623,153),"","exit")) { //退出遊戲 Application.Quit(); } } //繪製遊戲開始介面 void RenderStart() { GUI.skin = mySkin; GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),tex_startInfo); //繪製返回按鈕 if(GUI.Button(new Rect (0,500,403,78),"","back")) { //返回遊戲主選單 gameState = STATE_MAINMENU; } } //繪製遊戲幫助介面 void RenderHelp() { GUI.skin = mySkin; GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),tex_helpInfo); if(GUI.Button(new Rect (0,500,403,78),"","back")) { gameState = STATE_MAINMENU; } } //繪製遊戲設定介面 void RenderOption() { GUI.skin = mySkin; GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),textureBG); //開啟音樂按鈕 if(GUI.Button(new Rect (0,0,403,75),"","music_on")) { if (!music.isPlaying) { //播放音樂 music.Play(); }
} //關閉音樂按鈕 if(GUI.Button(new Rect (0,200,403,75),"","music_off")) { //關閉音樂 music.Stop(); } //返回按鈕 if(GUI.Button(new Rect (0,500,403,78),"","back")) { //返回遊戲主選單 gameState = STATE_MAINMENU; } } }