我有我正在使用的JavaScript代码,它使我的Unity游戏中的暂停菜单。这是一个简单的暂停菜单,显示“主菜单”和“退出游戏”按钮。在Unity中更改JS脚本,使其改变场景
如何将按钮绑定到Unity中的场景?因此,如果我点击“主菜单”,我希望它带我到scene1
,并用音乐按钮替换“退出游戏”按钮打开/关闭我的音乐。
我有我正在使用的JavaScript代码,它使我的Unity游戏中的暂停菜单。这是一个简单的暂停菜单,显示“主菜单”和“退出游戏”按钮。在Unity中更改JS脚本,使其改变场景
如何将按钮绑定到Unity中的场景?因此,如果我点击“主菜单”,我希望它带我到scene1
,并用音乐按钮替换“退出游戏”按钮打开/关闭我的音乐。
暂停菜单脚本:
#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;
}
}
}
}
谢谢,这看起来不错,唯一的问题是这样的:资产/暂停菜单/ PauseMenu.js(2,20):BCE0018:名称字符串'不表示有效类型('未找到')。你的意思是'UnityEngine.Networking.NetworkSystem.StringMessage'? –
我的不好,只是大写字符串,它应该工作。 –
非常感谢你,很棒!既然你对此很了解,你有没有将移动控件添加到Unity游戏中?你是怎么做到的?现在,当我在我的Android平板电脑上测试游戏时,按钮可以正常工作,但我无法控制汽车。有没有办法在不改变默认物理(统一标准资产中的carcontroller.cs)的情况下控制玩家。十分感谢! –
您使用什么UI系统,NGUI,UGUI? –
'Application.LoadLevel(“levelName”)'加载一个新场景。 http://docs.unity3d.com/ScriptReference/Application.LoadLevel.html – Ben