Создание нескольких файлов сохранения - каков следующий шаг здесь? - PullRequest
0 голосов
/ 28 сентября 2019

У меня хорошее начало для создания нескольких файлов сохранения, но я не совсем понимаю, каким будет следующий шаг.Сейчас я создал четыре документа (код прилагается ниже), но я не знаю, куда идти дальше.

Мой сценарий PlayerData, который помещает то, что я хочу сохранить в двоичный файл

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]

public class PlayerData
{
    public int health;
    public float mana;
}

Сценарий создания моего персонажа, который имеет несколько методов нажатия и находит игровой объект игрока

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterCreation : MonoBehaviour
{
    Player player; 

    public void Health()
    {
        player.playerData.health= 100;
    }
    public void Mana()
    {
        player.playerData.mana = 50.22f;
    }

    void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
    }
}

Мой сценарий сохранения, который «сохраняет»

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class Save 
{
   public PlayerData PlayerData { get; set; }

    public  Save()
    {
        PlayerData = GameObject.FindGameObjectWithTag("Player")
            .GetComponent<Player>()
            .playerData;
    }
}

Мой сценарий SaveLoad, который фактически сохраняет и загружает данные:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public class SaveLoad : MonoBehaviour
{
    public List<Save> Saves { get; set; }

    public Save CurrentSave {get; set;}

    public void Save()
    {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream fileStream = 
        File.Create(Path.Combine(Application.persistentDataPath, 
        "savefile.bin"));
        binaryFormatter.Serialize(fileStream, Saves);
        fileStream.Close();
        Debug.Log(Application.persistentDataPath);

    }
    public void Load()
    {
        if (File.Exists(Path.Combine(Application.persistentDataPath, "savefile.bin")))
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            FileStream fileStream = File.Open(
                Path.Combine(Application.persistentDataPath, "savefile.bin"), 
                FileMode.Open);
            Saves = (List<Save>)binaryFormatter.Deserialize(fileStream);
            fileStream.Close();
            CurrentSave = Saves[0];              
            GameObject.FindGameObjectWithTag("Player")
                .GetComponent<Player>()
                .playerData = CurrentSave.PlayerData;
        }
        else
        {
            Saves = new List<Save>();
        }
    }
    public void NewGame()
    {
        Save newSave = new Save();
        Saves.Add(newSave);
    }

    private void Start()
    {
        CurrentSave = new Save();
        Load();
    }
}

Наконец, мой сценарий проигрывателя, которыйприкрепленный к игроку игровой объект:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{

    public PlayerData playerData;

    private void Start()
    {
        playerData = new PlayerData();
    }
}

Итак, в общем, я ищу следующий шаг.Если бы вы могли объяснить, почему и как, это было бы здорово!: D

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