Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity C#Level菜单,锁定/解锁的级别存在问题_C#_Unity3d_Menu_Game Development_Levels - Fatal编程技术网

Unity C#Level菜单,锁定/解锁的级别存在问题

Unity C#Level菜单,锁定/解锁的级别存在问题,c#,unity3d,menu,game-development,levels,C#,Unity3d,Menu,Game Development,Levels,我将此PlayerPrefsUpdate.cs用于我的级别菜单: using UnityEngine; public class PlayerPrefsUpdate : MonoBehaviour { public int PlayerLevel = 0; private int LastLevel = -1; private void Start() { PlayerLevel = PlayerPrefs.GetInt("PlayerLe

我将此PlayerPrefsUpdate.cs用于我的级别菜单:

using UnityEngine;

public class PlayerPrefsUpdate : MonoBehaviour {

   public int PlayerLevel = 0;

    private int LastLevel = -1;

    private void Start() {
        PlayerLevel = PlayerPrefs.GetInt("PlayerLevel");
    }

    private void Update() {
        if (LastLevel != PlayerLevel) {
            PlayerPrefs.SetInt("PlayerLevel", PlayerLevel);
            LastLevel = PlayerLevel;
        }
    }
}
例如,如果我玩4个关卡,5个关卡被解锁,一切正常

但是如果我再次玩1级游戏,级别将再次锁定。我该怎么办


检查您玩过的最后一个关卡是否不是
玩家关卡
检查它是否更大

if(LastLevel>PlayerLevel){
PlayerPrefs.SetInt(“PlayerLevel”,PlayerLevel);
LastLevel=播放器级别;
}
您的命名有点混乱,因此可能是另一种方式。但是你要检查你刚才玩的水平是否高于你迄今为止玩过的最大水平。此外,您真的不需要在
更新
功能中包含此项,因为我预计在完成新级别并返回菜单屏幕之前,它不会改变

如果问题是PlayerPrefs'
PlayerLevel
变量是唯一存在的问题,则您可能需要检查更新时是否正在增加它:

int progressedToLevel=PlayerPrefs.GetInt(“PlayerLevel”);
如果(currentLevel>progressedToLevel){
PlayerPrefs.SetInt(“PlayerLevel”,当前级别);
}

检查您玩过的最后一关是否不是
玩家级别
检查它是否更高

if(LastLevel>PlayerLevel){
PlayerPrefs.SetInt(“PlayerLevel”,PlayerLevel);
LastLevel=播放器级别;
}
您的命名有点混乱,因此可能是另一种方式。但是你要检查你刚才玩的水平是否高于你迄今为止玩过的最大水平。此外,您真的不需要在
更新
功能中包含此项,因为我预计在完成新级别并返回菜单屏幕之前,它不会改变

如果问题是PlayerPrefs'
PlayerLevel
变量是唯一存在的问题,则您可能需要检查更新时是否正在增加它:

int progressedToLevel=PlayerPrefs.GetInt(“PlayerLevel”);
如果(currentLevel>progressedToLevel){
PlayerPrefs.SetInt(“PlayerLevel”,当前级别);
}

我在GameManager.cs中成功地使用了以下代码:

public void CompleteLevel ()
 {
      int savedPlayerLevel = PlayerPrefs.GetInt("PlayerLevel");
      int newPlayerLevel = Mathf.Max(PlayerLevel, savedPlayerLevel);
      PlayerPrefs.SetInt("PlayerLevel", newPlayerLevel);
      completeLevelUI.SetActive(true);
  }

我在GameManager.cs中成功地使用了以下代码:

public void CompleteLevel ()
 {
      int savedPlayerLevel = PlayerPrefs.GetInt("PlayerLevel");
      int newPlayerLevel = Mathf.Max(PlayerLevel, savedPlayerLevel);
      PlayerPrefs.SetInt("PlayerLevel", newPlayerLevel);
      completeLevelUI.SetActive(true);
  }