2015-07-03 42 views
0

我有我正在使用的JavaScript代碼,它使我的Unity遊戲中的暫停菜單。這是一個簡單的暫停菜單,顯示「主菜單」和「退出遊戲」按鈕。在Unity中更改JS腳本,使其改變場景

如何將按鈕綁定到Unity中的場景?因此,如果我點擊「主菜單」,我希望它帶我到scene1,並用音樂按鈕替換「退出遊戲」按鈕打開/關閉我的音樂。

+0

您使用什麼UI系統,NGUI,UGUI? –

+0

'Application.LoadLevel(「levelName」)'加載一個新場景。 http://docs.unity3d.com/ScriptReference/Application.LoadLevel.html – Ben

回答

0

暫停菜單腳本:

#pragma strict 
var musicBtnText : String = "Music: On"; 
var musicOn : boolean = true; 
var isPaused : boolean = false; 


function Update() 
{ 
    if(musicOn) 
    { 
     musicBtnText = "Music: On"; 
    } 
    else 
    { 
     musicBtnText = "Music: Off"; 
    } 
    if(Input.GetKeyDown(KeyCode.P)) 
    { 
     isPaused = !isPaused; 
     if(isPaused) 
     { 
      Time.timeScale = 0; 
     } 
     else 
     { 
      Time.timeScale = 1; 
     } 
    } 
} 

function OnGUI() 
{ 
    if(isPaused) 
    { 
     if (GUI.Button(Rect(Screen.width/2-50, 240, 100, 40), "Main Menu")) 
     { 
      Application.LoadLevel("scene1"); 
     } 
     if(GUI.Button(Rect(Screen.width/2-50, 300, 100, 40), "" + musicBtnText)) 
     { 
      musicOn = !musicOn; 
      GameObject.Find("cameraName").GetComponent(AudioListener).enabled = !GameObject.Find("cameraName").GetComponent(AudioListener).enabled; 
     } 
    } 
} 

但是,如果你想落實到自己的代碼這一點,有一點要注意的是,在統一製作的按鈕時,您包含他們的if語句。這樣,只要點擊該按鈕,就會調用if語句內的任何代碼。至於打開和關閉音樂,您將希望啓用和禁用主音頻監聽器,默認情況下該監聽器已連接到主攝像機。因此,在我的代碼中,當GameObject.Find("cameraName")替換攝像機名稱和主攝像機的名稱時。最後,通過呼叫Application.LoadLevel("levelName")來完成統一的加載水平。祝你好運!如果這給了你任何錯誤,我很樂意提供幫助。

在C#:

using UnityEngine; 
using System.Collections; 

public class PauseMenu : MonoBehaviour { 

    public string musicBtnText = "Music: On"; 
    public bool musicOn = true; 
    public bool isPaused = false; 


    void Update() 
    { 
     if(musicOn) 
     { 
      musicBtnText = "Music: On"; 
     } 
     else 
     { 
      musicBtnText = "Music: Off"; 
     } 
     if(Input.GetKeyDown(KeyCode.P)) 
     { 
      isPaused = !isPaused; 
      if(isPaused) 
      { 
       Time.timeScale = 0; 
      } 
      else 
      { 
       Time.timeScale = 1; 
      } 
     } 
    } 

    void OnGUI() 
    { 
     if(isPaused) 
     { 
      if (GUI.Button(new Rect(Screen.width/2-50, 240, 100, 40), "Main Menu")) 
      { 
       Application.LoadLevel("scene1"); 
      } 
      if(GUI.Button(new Rect(Screen.width/2-50, 300, 100, 40), "" + musicBtnText)) 
      { 
       musicOn = !musicOn; 
       GameObject.Find("cameraName").GetComponent<AudioListener>().enabled = !GameObject.Find("cameraName").GetComponent<AudioListener>().enabled; 
      } 
     } 
    } 
} 
+0

謝謝,這看起來不錯,唯一的問題是這樣的:資產/暫停菜單/ PauseMenu.js(2,20):BCE0018:名稱字符串'不表示有效類型('未找到')。你的意思是'UnityEngine.Networking.NetworkSystem.StringMessage'? –

+0

我的不好,只是大寫字符串,它應該工作。 –

+0

非常感謝你,很棒!既然你對此很瞭解,你有沒有將移動控件添加到Unity遊戲中?你是怎麼做到的?現在,當我在我的Android平板電腦上測試遊戲時,按鈕可以正常工作,但我無法控制汽車。有沒有辦法在不改變默認物理(統一標準資產中的carcontroller.cs)的情況下控制玩家。十分感謝! –