不能隐式转换类型,UNITY。

问题描述 投票:0回答:1

我打算做一个保存系统,在我的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'。

我正在寻找解决这些错误的方法.我不知道如何解决这些问题。

有谁能帮我解决吗?

unity3d
1个回答
1
投票

HighScore data = formatter.Deserialize(stream) as SaveHighScore;

你正在反序列化一个 SaveHighScore 但试图将其保存在 HighScore这是一个MonoBehaviour组件,和你希望的完全不一样。

修改你的代码为

var data = formatter.Deserialize(stream) as SaveHighScore;

我认为一切都应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.