У меня хорошее начало для создания нескольких файлов сохранения, но я не совсем понимаю, каким будет следующий шаг.Сейчас я создал четыре документа (код прилагается ниже), но я не знаю, куда идти дальше.
Мой сценарий 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