Unity C#Level菜单,锁定/解锁的级别存在问题
我将此PlayerPrefsUpdate.cs用于我的级别菜单: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
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);
}