暂停菜单脚本:
#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;
}
}
}
}