Poniżej podaję kod który udało mi się sklecić.
Player.cs
- Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Player : MonoBehaviour
{
public int PlayerLV = 3;
public int PlayerHP = 1;
private Scene Scena;
public string AktualnaScena;
void Start()
{
//Pobieranie aktualnej sceny
Scena = SceneManager.GetActiveScene();
AktualnaScena = Scena.name;
}
//Zapisywanie
public void ZapiszGracza()
{
SaveSystem.ZapiszGracza(this);
}
//Wczytywanie
public void WczytajGracza()
{
PlayerData data = SaveSystem.WczytajGracza();
PlayerHP = data.health;
PlayerLV = data.level;
AktualnaScena = data.ScenaToLoad;
Vector3 PozycjaGracza;
PozycjaGracza.x = data.PozycjaGracza[0];
PozycjaGracza.y = data.PozycjaGracza[1];
PozycjaGracza.z = data.PozycjaGracza[2];
transform.position = PozycjaGracza;
}
}
SaveSystem.cs
- Kod: Zaznacz wszystko
using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public static class SaveSystem
{
public static void ZapiszGracza(Player gracz)
{
BinaryFormatter Formater = new BinaryFormatter();
string path = Application.persistentDataPath + "/player.pno";
FileStream stream = new FileStream(path, FileMode.Create);
PlayerData data = new PlayerData(gracz);
Formater.Serialize(stream, data);
stream.Close();
}
public static PlayerData WczytajGracza()
{
string path = Application.persistentDataPath + "/player.pno";
if (File.Exists(path))
{
BinaryFormatter Formatter = new BinaryFormatter();
FileStream stream = new FileStream(path, FileMode.Open);
PlayerData data = Formatter.Deserialize(stream) as PlayerData;
stream.Close();
return data;
} else
{
Debug.LogError("Save file not found");
return null;
}
}
}