2017-02-19 57 views
0

我想做一个益智游戏,其中有3种游戏模式(普通模式,定时器模式,水龙头模式)和50个关卡。所有3个模式的所有50个电平都相同,但是在定时器定时器模式中有倒数计时器,并且在分接模式中有定时器和分接头。在正常模式下没有限制。如何计算Unity3D中PlayerPrefs键的数量?

现在我正在根据PlayerPrefs中的模式保存每个级别。

我没有锁定电平,除了定时器模式和分接头模式被锁定。只有正常的模式被解锁。

现在,这是我想要的。要解锁定时器模式,请首先播放任意10个正常模式等级,然后先解锁轻击模式,然后首先播放10个定时器模式等级。

如何跟踪完成了多少级别。

这里是代码我这是怎么completi

if (isNormalMode) { 
    PlayerPrefs.SetString ("norm"+levelStr, levelStr); 
    } 

if (isTimerMode) { 
    PlayerPrefs.SetString ("timer"+levelStr, levelStr); 
    } 

if (isTapsMode) { 
    PlayerPrefs.SetString ("taps"+levelStr, levelStr); 
    } 
+0

这完全错了。做下面的程序员*。还有值得注意的是,简单地说,*你不再制作这样的游戏*。今天制作游戏是使用PubNub,Parse,Firebase等。任何与此处讨论的内容模糊不清的东西都只是一个群众云特征。 – Fattie

回答

0

后保存每个级别您必须代表一个阶级的水平和层次的信息然后把这个类里面另一个类数组。可以使用该类阵列,以确定它是与索引0水平1索引1级别2哪个级别。

[System.Serializable] 
public class Levels 
{ 
    public LevelInfo[] levelInfo; 
} 

[System.Serializable] 
public class LevelInfo 
{ 
    public bool isCompleted; 
    public string levelName; 
    public int levelScore; 

    //Other Level Information here 
} 

抓住从this岗位DataSaver Helper类。


然后,您可以创建水平(5级为例)

Levels levels = new Levels(); 
levels.levelInfo = new LevelInfo[5]; 

for (int i = 0; i < levels.levelInfo.Length; i++) 
{ 
    levels.levelInfo[i] = new LevelInfo(); 
    levels.levelInfo[i].levelName = i + 1.ToString(); 
    levels.levelInfo[i].levelScore = UnityEngine.Random.Range(10, 100); 
    levels.levelInfo[i].isCompleted = true; 
} 

保存级别:

DataSaver.saveData(levels, "Levels"); 

装入水平

负载,并检查是否水平完成:

//Load Saved Data 
Levels levels = DataSaver.loadData<Levels>("Levels"); 

检查水平1完成。

if (levels.levelInfo[0].isCompleted) 
{ 
    //Level 1 Completed 
} 

检查等级2是否完成。

if (levels.levelInfo[1].isCompleted) 
{ 
    //Level 2 Completed 
} 

....

时所设置正确,阅读水平的正确方法是使用循环来找出水平尚未完成,然后从那里开始。

Levels levels = DataSaver.loadData<Levels>("Levels"); 
for (int i = 0; i < levels.levelInfo.Length; i++) 
{ 
    if (!levels.levelInfo[i].isCompleted) 
    { 
     Debug.LogFormat("Level ({0}) is not completed", i + 1); 
     //Level not completed. Start from here! 
    } 
}