Sprawdzanie czy jest zapisana gra

Programowanie w Unity.

Sprawdzanie czy jest zapisana gra

Postprzez urza891 » 15 Mar 2021, 12:23

Witam, mam taki problem, stworzyłem system zapisu i odczytu gry. Pojawia się teraz kwestia sprawdzenia czy istnieje zapis (jeśli tak to w menu aktywny będzie przycisk Kontynuuj) czy nie.

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;
           
        }
    }
}

urza891
 
Posty: 3
Rejestracja: 15 Mar 2021, 12:16
Has thanked: 0 time
Been thanked: 0 time

Re: Sprawdzanie czy jest zapisana gra

Postprzez Wichur » 15 Mar 2021, 12:37

string path = Application.persistentDataPath + "/player.pno";
bool exists = File.Exists(path));
Awatar użytkownika
Wichur
 
Posty: 151
Rejestracja: 19 Gru 2017, 10:33
Miejscowość: Pruszcz Gdański
Has thanked: 0 time
Been thanked: 0 time

Re: Sprawdzanie czy jest zapisana gra

Postprzez urza891 » 15 Mar 2021, 16:29

No okej, dodałem to przed warunkiem sprawdzającym czy plik jest, ale jak się dobrać do tego bo SaveSystem jest statyczny?
urza891
 
Posty: 3
Rejestracja: 15 Mar 2021, 12:16
Has thanked: 0 time
Been thanked: 0 time

Re: Sprawdzanie czy jest zapisana gra

Postprzez EvilArev » 15 Mar 2021, 17:17

Możesz sprawdzić obecność pliku poza klasą SaveSystem. Sprawdź to w skrypcie menu i, zależnie od istnienia pliku z savem, włącz lub wyłącz przycisk ("interactable" w klasie UnityEngine.UI.Button).
EvilArev
 
Posty: 399
Rejestracja: 14 Kwi 2013, 15:32
Has thanked: 0 time
Been thanked: 0 time

Re: Sprawdzanie czy jest zapisana gra

Postprzez urza891 » 16 Mar 2021, 10:55

ale właśnie mi chodzi o to jak się dobrać (sprawdzić) z innego skryptu obecność tego pliku bo jest on w przestrzeni statycznej.
urza891
 
Posty: 3
Rejestracja: 15 Mar 2021, 12:16
Has thanked: 0 time
Been thanked: 0 time

Re: Sprawdzanie czy jest zapisana gra

Postprzez Ether_141 » 16 Mar 2021, 20:59

W klasie SaveSystem dodaj statyczną właściwość:
public static bool FileExists => File.Exists(Application.persitentDataPath + "/player.pno");

Potem sprawdzasz sobie gdzie potrzebujesz.
Awatar użytkownika
Ether_141
 
Posty: 530
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time


Wróć do Skrypty

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 2 gości