我正在尝试建立一款游戏,每位玩家完成一个关卡,就会加载下一个关卡。当玩家完成关卡时,如果他完成关卡1,则关卡2加载,依此类推。
我尝试使用变量来执行此操作。这样变量增加并且Unity加载与该变量相对应的场景(1 =级别1,2 =级别2,依此类推)。我遇到的问题是,我希望团结一致地记住所说的变量,以便当游戏第二次/第三次加载时,用户从第2级而不是第1级(或更高级别)开始
由于我正在尝试执行我不知道该怎么做的操作,因此我无法在此处提供代码
答案 0 :(得分:2)
您可以使用PlayerPrefs存储级别值。
例如 加载场景后,您可以在Start()方法中获取级别值
void Start()
{
//It will return level value, if player is playing game first time default value is return 0
int level = PlayerPrefs.GetInt("Level", 0);
}
现在,当玩家完成当前级别时,您可以像这样增加级别并进行存储。
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);
}
答案 1 :(得分:0)
您可以通过序列化将对象的状态保存到文件中。这是有关此内容的完整教程:https://learn.unity.com/tutorial/persistence-saving-and-loading-data
相关的代码段是这样的:
public class GameControl : MonoBehaviour
{
public float health;
public float experience;
public void Save()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/playerInfo.dat");
PlayerData data = new PlayerData();
data.health = health;
data.experience = experience;
bf.Serialize(file, data);
file.Close();
}
public void Load()
{
if(File.Exists(Application.persistentDataPath + "/playerInfo.dat"))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/playerInfo.dat", FileMode.Open);
PlayerData data = (PlayerData)bf.Deserialize(file);
file.Close();
health = data.health;
experience = data.experience;
}
}
}
[Serializable]
class PlayerData
{
public float health;
public float experience;
}