这是我第一次尝试在达到"目标"
时加载下一关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();
}
我不知道为什么,但有时它不会加载到下一个级别,它工作了一段时间然后停止了,在我重置统一之后它再次起作用,所以我不确定是否这是我的代码或团结......我收到一条警告信息,上面写着&#34;警告CS0618&#39; Application.loadedLevel&#39;已过时:&#39;使用SceneManager确定已加载的场景&#39;&#34;和&#34;警告CS0618&#39; Application.LoadLevel(int)&#39;已过时:&#39;使用SceneManager.LoadScene&#39;&#34;我是编码的新手,完全失去了这个。花了4个小时试图解决它。这些警告是什么?他们可以影响装载吗?我也想要能够保存关卡的价值,这样我就可以在游戏中使用它,并为它添加高分。我在第一次尝试时尝试使用它,但它并没有起到我希望的作用。 (CurrentLevel)
答案 0 :(得分:3)
Application.LoadLevel
,其余的在Unity 5中已经过时了。您必须使用SceneManager
代替。
所以Application.LoadLevel()
现在是SceneManager.LoadScene()
。
您还必须加入using UnityEngine.SceneManagement;
见这里:http://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html
所需要的只是一个快速的谷歌。
答案 1 :(得分:1)
您的场景是否已正确添加到构建设置中? 转到文件&gt;构建设置...并签入&#34;场景中的场景&#34;是否按照您需要的方式添加了从场景#0到场景#3的所有场景。
您提供的第一个示例应该有效,然而您必须确保在加载下一个场景时不会破坏您的第一个脚本(包含CurrentLevel
)。通过在GameObject.DontDestroyOnLoad(gameObject)
中调用void Start()
来执行此操作。或者,您可以使CurrentLevel
成为静态成员。
这是必要的,因此加载下一个场景时CurrentLevel
的值不会丢失。这可以解释为什么你一遍又一遍地加载相同的水平。
在第二个示例中,在LevelPassTest()中,检查是否Application.loadedLevel > 4
,当然这必须是Application.loadedLevel < 4
。如果你解决这个问题,那么第二个例子也应该可以正常工作。
是的,您正在部分处理过时的API,但这并不能解释为什么它不起作用。
答案 2 :(得分:0)
使用UnityEngine.SceneManagement;
然后使用SceneManager.LoadScene()与我们以前使用Application.LoadLevel()的方式相同,在unity 5.xx Application.LoadLevel中已经过时 - 这意味着它将来会被删除,不应该被使用,并且不能保证它能正常工作。
我建议你阅读Unity关于Scene和SceneManager类的文档,这样你就可以熟悉unity 5引入的变化。