加载下一级 Unity c#
本文关键字:一级 Unity 加载 | 更新日期: 2023-09-27 18:32:27
这是我第一次尝试在达到"目标"时加载下一个级别
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();
}
我不知道为什么,但有时它不会加载下一个级别,它工作了一段时间然后停止了,在我重置 unity 后它再次工作,所以我不确定这是我的代码还是 unity...我收到一条警告消息,指出"警告 CS0618 'Application.loadedLevel' 已过时: '使用 SceneManager 确定已加载的场景'"和"警告 CS0618 'Application.LoadLevel(int)' 已过时: '使用 SceneManager.LoadScene'" 我是编码新手,完全迷失了这一点。花了 4 个小时试图修复它。这些警告是什么?他们能影响负载吗?我还希望能够保存关卡的值,以便我可以在游戏存档中使用它,并为其附加高分。我在第一次尝试中尝试使用它,但它并没有按照我希望的方式工作。(当前水平)
Application.LoadLevel
和其余的在 Unity 5 中已经过时。您必须改用SceneManager
。
所以Application.LoadLevel()
现在SceneManager.LoadScene()
.
您还必须包括using UnityEngine.SceneManagement;
看这里: http://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html
所需要的只是一个快速的谷歌。
-
您的场景是否已正确添加到构建设置中?转到文件>生成设置...并在"构建中的场景"中检查是否从场景 #0 到场景 #3 的所有场景都按照您需要的方式添加。
-
您给出的第一个示例应该可以工作,但是您必须确保您的第一个脚本(包含
CurrentLevel
)不会在加载下一个场景时被破坏。通过在void Start()
中调用GameObject.DontDestroyOnLoad(gameObject)
来执行此操作。或者,也可以CurrentLevel
设置为静态成员。这是必要的,以便在加载下一个场景时不会丢失CurrentLevel
的值。这可以解释为什么你一遍又一遍地加载相同的关卡。 -
在第二个示例中,在 LevelPassTest() 中,您检查是否
Application.loadedLevel > 4
,这当然必须Application.loadedLevel < 4
。如果修复此问题,第二个示例也应该可以正常工作。
是的,您正在部分使用过时的API,但这并不能解释为什么它不起作用。
使用 UnityEngine.SceneManagement;
然后使用 SceneManager.LoadScene() 的方式与我们过去使用 Application.LoadLevel() 的方式相同,在 unity 5.x.x 中 Application.LoadLevel 已经过时 - 这意味着它将在未来被删除并且不应该使用,并且不能保证它会正常工作。
我建议您阅读 Unity 关于 Scene 和 SceneManager 类的文档,以便熟悉 Unity 5 引入的变化。