繁体   English   中英

加载下一个Unity C#

[英]Loading next level Unity c#

这是我达到“目标”时加载下一个关卡的第一次尝试

public int CurrentLevel = 0;
public static int maxlevel = 3;

public void CompleteLevel()
{
    if (CurrentLevel < maxlevel)
    {
        CurrentLevel += 1;
        SceneManager.LoadScene(CurrentLevel);
    }
    else
        print("you win");
}

这是另一堂课...

void OnTriggerEnter(Collider other)
{
    if (other.transform.tag == "DeathObject")
        Die();
    if (other.transform.tag == "Goal")
    Manager.CompleteLevel();
}

它最终加载了第一级,进入第二级,然后当我达到目标时将重复第二张地图。 它要做的另一件事是从第一或第二级跳到最后一级。 这是我尝试过的第二件事:

public void LevelPassTest()
{
    if (Application.loadedLevel > 4)
        Application.LoadLevel(Application.loadedLevel + 1);
        else
    print("win");
}

这是另一堂课。

void OnTriggerEnter(Collider other)
{
    if (other.transform.tag == "DeathObject")
        Die();
    if (other.transform.tag == "Goal")
    Manager.LevelPassTest();
}

我不确定为什么,但是有时它不加载下一个级别,它工作了一会儿然后停了下来,在我重新设置了单位之后,它又可以工作了,所以我不确定是我的代码还是单位...我收到警告消息:“警告CS0618'Application.loadedLevel'已过时:'使用SceneManager确定已加载哪些场景''和'警告CS0618'Application.LoadLevel(int)'已过时:'Use SceneManager.LoadScene' “我是编码的新手,对此完全迷失了。 花了四个小时试图修复它。 这些警告是什么? 他们会影响负载吗? 我还希望能够保存该关卡的值,以便可以在游戏保存中使用它,并为其附加高分。 我在第一次尝试中尝试使用此方法,但是它并没有达到我的期望。 (现在的水平)

从Unity 5开始, Application.LoadLevel和其余部分已过时。您必须改为使用SceneManager

所以Application.LoadLevel()现在是SceneManager.LoadScene()

您还必须包括using UnityEngine.SceneManagement;

参见此处: http : //docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html

它所需要的只是一个快速的Google。

  1. 您的场景是否正确添加到“构建设置”中? 转到“文件”>“构建设置...”,然后检查“构建中的场景”是否以所需方式添加了从场景0到场景3的所有场景。

  2. 您给出的第一个示例应该可以工作, 但是必须确保在加载下一个场景时不会破坏您的第一个脚本(包含CurrentLevel )。 为此,请在其void Start()调用GameObject.DontDestroyOnLoad(gameObject) void Start() 或者,您可以使CurrentLevel成为静态成员。 这是必需的,因此在加载下一个场景时不会丢失CurrentLevel的值。 这可以解释为什么您一遍又一遍地加载相同的级别。

  3. 在第二个示例中,在LevelPassTest()中,检查Application.loadedLevel > 4是否必须为Application.loadedLevel < 4 如果解决此问题,第二个示例也应该可以正常工作。

是的,您正在部分处理过时的API,但这不能解释为什么它不起作用。

使用UnityEngine.SceneManagement;

然后在统一5.xx中使用SceneManager.LoadScene()就像我们以前使用Application.LoadLevel()的方式一样。Application.LoadLevel已过时-意味着它将在将来被删除并且不应该使用,并且不是保证它将正常工作。

我建议您阅读有关Scene和SceneManager类的Unity文档,以便熟悉Unity 5引入的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM