Невозможно неявно преобразовать тип, UNITY - PullRequest
0 голосов
/ 29 мая 2020

Я собираюсь создать систему сохранения, чтобы сохранить свой рекорд в моей единственной игре, но дает мне две ошибки, это первый код для данных ,,,

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 ) Невозможно неявно преобразовать тип «SaveHighScore» в «HighScore»

и

SaveSystem.cs (26,20) Невозможно неявно преобразовать тип «HighScore» в «SaveHighScore»

Я ищу решение этих ошибок. Я не знаю, как их решить.

Кто-нибудь здесь, чтобы помочь мне ????

1 Ответ

1 голос
/ 29 мая 2020

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

Вы десериализуете SaveHighScore, но пытаетесь сохранить его в HighScore, который является MonoBehaviour компонент, а совсем не то, что вы хотите sh, которым он должен быть.

Измените свой код на

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

и думаю все должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...