C# Unity:如何根据玩家进度保存和加载场景

C# Unity:如何根据玩家进度保存和加载场景,c#,unity3d,C#,Unity3d,我试图建立一个游戏,在这个游戏中,每一个玩家完成一个关卡,下一个关卡就会加载。当玩家完成关卡时,如果他完成关卡1,则完成关卡2加载,依此类推 我已经尝试使用一个变量来实现这一点。使变量增加,Unity加载与该变量对应的场景(1=级别1,2=级别2,依此类推)。我的问题是,我希望unity记住所说的变量,这样当游戏第二次/第三次加载时,用户从2级开始,而不是1级(甚至更高) 这里没有我可以提供的代码,因为我正在尝试一些我不知道如何做的事情您可以使用PlayerPrefs来存储级别值 例如。 加载场

我试图建立一个游戏,在这个游戏中,每一个玩家完成一个关卡,下一个关卡就会加载。当玩家完成关卡时,如果他完成关卡1,则完成关卡2加载,依此类推

我已经尝试使用一个变量来实现这一点。使变量增加,Unity加载与该变量对应的场景(1=级别1,2=级别2,依此类推)。我的问题是,我希望unity记住所说的变量,这样当游戏第二次/第三次加载时,用户从2级开始,而不是1级(甚至更高)


这里没有我可以提供的代码,因为我正在尝试一些我不知道如何做的事情

您可以使用PlayerPrefs来存储级别值

例如。 加载场景时,可以在Start()方法中获取级别值

现在当玩家完成当前等级后,你们可以增加等级并像这样储存

void LevelComplete()
{
  //It will return current level
  int currentLevel = PlayerPrefs.GetInt("Level", 0);
  // Now we increase one level and store new level
  currentLevel++;
  PlayerPrefs.SetInt("Level", currentLevel);
}

可以通过序列化将对象的状态保存到文件中。以下是关于这方面的完整教程:

相关代码如下所示:

公共类游戏控制:单一行为
{
公共卫生;
公众浮存经验;
公共作废保存()
{
BinaryFormatter bf=新的BinaryFormatter();
FileStream file=file.Create(Application.persistentDataPath+“/playerInfo.dat”);
PlayerData=新的PlayerData();
data.health=健康;
数据。经验=经验;
序列化(文件、数据);
file.Close();
}
公共空荷载()
{
if(File.Exists(Application.persistentDataPath+“/playerInfo.dat”))
{
BinaryFormatter bf=新的BinaryFormatter();
FileStream file=file.Open(Application.persistentDataPath+“/playerInfo.dat”,FileMode.Open);
PlayerData=(PlayerData)bf.反序列化(文件);
file.Close();
健康=数据。健康;
经验=数据。经验;
}
}
}
[可序列化]
类玩家数据
{
公共卫生;
公众浮存经验;

}
您不应该为此使用playerprefs!阅读本节
小心:不要将PlayerPrefs用于重要内容
啊,我明白了。因此,任何人都可以通过PlayerRefs来更改级别。有好的选择吗?没有选择。您应该使用playerprefs保存进度。还有其他选择,但当玩家结束游戏时,进度将失败。
void LevelComplete()
{
  //It will return current level
  int currentLevel = PlayerPrefs.GetInt("Level", 0);
  // Now we increase one level and store new level
  currentLevel++;
  PlayerPrefs.SetInt("Level", currentLevel);
}