在Unity中在第一个场景上单击按钮时加载另一个场景

时间:2015-06-21 17:08:03

标签: unity3d

我已经创建了两个统一的场景,我想加载场景2如果单击场景1上的button1。我一直在谷歌搜索这个问题,阅读统一文档,但我只找到了这个

   Application.LoadLevel("SceneTwo");

我已尝试使用此功能,但我的场景2只是加载而没有单击第一个场景上的按钮。 这是我的代码目前的第一个场景

    using UnityEngine;
    using System.Collections;

    public class first : MonoBehaviour {

    // Use this for initialization
    void Start () {

            Application.LoadLevel("MiniGame");
    }

    // Update is called once per frame
    void Update () {
        Application.LoadLevel("MiniGame");
    }
}

我已将此脚本与我的第一个屏幕上的按钮和" MiniGame"是第二个场景。

3 个答案:

答案 0 :(得分:2)

  1. 创建GUI按钮。
  2. 编写用于更改级别的公共函数脚本。如下例所示。

    using UnityEngine;
    using System.Collections;
    
    public class first : MonoBehaviour 
    {
        public void GoToLevel(string level)
        {
            Application.LoadLevel (level);
        }   
    }
    
  3. 设置GUI按钮的OnClick方法。我在画布中使用了我的脚本,可以在任何对象中使用。 For Example
  4. 您也可以观看unity scene selection tutorial

答案 1 :(得分:2)

Application.LoadLevel (level);已过时。

可以改为使用SceneManager.LoadScene()

答案 2 :(得分:-1)

Application.LoadLevel() functionality使用完全错误。但这不是唯一的问题。 Unity脚本中的Start()在创建附加了此脚本的对象时调用一次。每帧调用Update(),这意味着你现在要求团结加载你的第二级数千次,直到它“崩溃”为止。

为了修复此功能,您应该通过将此脚本附加到要单击的对象来创建可单击对象

 using UnityEngine;
 using System.Collections;

 public class first : MonoBehaviour 
 {

 // Use this for initialization
 void Start ()
 {

 }
 void Update () 
 {

 }

 void OnMouseDown()
 {
   // this object was clicked - do something
 Application.LoadLevel("MiniGame");
 }  

当然,你需要在你想要点击的对象上添加一个对撞机