解锁Unity3D中的关卡

时间:2016-01-28 13:56:54

标签: unity3d levels

我希望制作一个系统,在完成一个系统后解锁下一个级别。 我使用c#代码

如果您完成了1级,则解锁level2等...

mainmenu是构建级别0,级别选择是构建级别1,所以第一级实际上是构建级别2.

public bool isLevel1;
public bool isLevel2;
public bool isLevel3;
public bool isLevel4;


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}
void OnMouseUp()
{
    if (isLevel1)
    {
        Application.LoadLevel(2);
    }
    if (isLevel2)
    {
        Application.LoadLevel(3);
    }
    if (isLevel3)
    {
        Application.LoadLevel(4);
    }
    if (isLevel4)
    {
        Application.LoadLevel(5);
    }
}

我是如何从等级选择中选择等级的。我在主菜单上有类似的东西,但我不知道如何锁定它们然后在完成一个级别后解锁。我有办法锁定它们,但我放弃了它,因为它没有工作。如果有人能够简单地解释它或者指向我错过的指南,那将是一个很大的帮助。因为我找到了一些指南,但他们认为我的水平选择不同,我认为。 我提前感谢你,我愿意回答任何进一步的问题

2 个答案:

答案 0 :(得分:2)

我建议PlayerPrefs可能是做这样的事情的最佳选择,它可以很好地为玩家保存分数,因此保存未锁定的等级也可以。

以下是PlayerPrefs的一些文档: http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

这是一个很好的视频链接,显示类似于您想要实现的内容:) https://www.youtube.com/watch?v=uw0kZ72zCvE&feature=youtu.be

答案 1 :(得分:0)

可能在一些空的游戏对象上包含一个脚本(确保你调用Object.DontDestroyOnLoad(transform.gameObject)以便在等级更改时对象保持不变),并且每次完成一个级别时,更改该空对象中的布尔变量以表示该级别至少已完成一次。然后,如果表示上一级的boolean已完成true,则在您的用户界面中解锁下一级。

如果你的角色在完成上一个角色后自动升级到下一个级别,你可以使用OnLevelWasLoaded(int level)。在这种情况下,level是刚刚加载的级别的数量(因此对于你来说,3将是你真正的第一级)。然后在此函数中更改空游戏对象的boolean变量,而不是在上一级别的末尾。如果,当你完成关卡时,你可以进入下一个级别(没有一个解锁选项),这可能是最有用的。