我打算做一个保存系统,在我的unity游戏中保存我的高分,但给我两个错误sthis是第一个代码到数据,,,。
public class SaveHighScore
{
public int highScore;
public SaveHighScore(HighScore highscore)
{
highScore = highscore.highScore;
}
}
这是我的第二个保存系统
public class SaveSystem
{
public static void SaveScore(HighScore highscore)
{
BinaryFormatter formatter = new BinaryFormatter();
string path = Application.persistentDataPath + "/player.fun";
FileStream stream = new FileStream(path, FileMode.Create);
SaveHighScore data = new SaveHighScore(highscore);
formatter.Serialize(stream, data);
stream.Close();
}
public static SaveHighScore loadHighScore()
{
string path = Application.persistentDataPath + "/player.fun";
if (File.Exists(path))
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(path, FileMode.Open);
HighScore data = formatter.Deserialize(stream) as SaveHighScore;
stream.Close();
return (SaveHighScore) data;
}
else
{
Debug.Log("no highScore found");
return null;
}
}
这是我的第三个也是最后一个代码
public class HighScore : MonoBehaviour
{
public int highScore;
public void saveHighscore()
{
SaveSystem.SaveScore(this);
}
public void loadHighscore()
{
SaveHighScore data = SaveSystem.loadHighScore();
highScore = data.highScore;
}
}
第一段代码是准备数据保存,第二段代码是制作保存系统,第三段代码是制作两个函数,当玩家要加载最后一个高分时调用。
但是在第二段代码中出现了两个错误。
SaveSystem.cs(24,30) Cannot implicitly convert type 'SaveHighScore' to 'HighScore'.
和
SaveSystem.cs(26,20) 不能隐式地将类型'HighScore'转换为'SaveHighScore'。
我正在寻找解决这些错误的方法.我不知道如何解决这些问题。
有谁能帮我解决吗?
HighScore data = formatter.Deserialize(stream) as SaveHighScore;
你正在反序列化一个 SaveHighScore
但试图将其保存在 HighScore
这是一个MonoBehaviour组件,和你希望的完全不一样。
修改你的代码为
var data = formatter.Deserialize(stream) as SaveHighScore;
我认为一切都应该工作。