首页 文章

在Unity中更改JS脚本,以便更改场景

提问于
浏览
0

我有我正在使用的JavaScript代码,它在我的Unity游戏中创建了一个暂停菜单 . 这是一个简单的暂停菜单,显示“主菜单" and "退出游戏”按钮 .

如何将按钮绑定到Unity中的场景?因此,如果我点击“主菜单”,我希望它将我带到 scene1 ,并用音乐按钮替换“退出游戏”按钮以打开/关闭我的音乐 .

1 回答

  • 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") 来完成加载级别 . 祝你好运!评论如果这给你任何错误,我很乐意提供帮助 .

    In 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;
                }
            }
        }
    }
    

相关问题