Search Unity

Game save and load game system

Discussion in 'Timeline' started by unity_SQouPa2Da5hJPA, Apr 6, 2020.

  1. unity_SQouPa2Da5hJPA

    unity_SQouPa2Da5hJPA

    Joined:
    Oct 12, 2019
    Posts:
    1
    Hello, I'm having trouble saving my script and loading the game progress, like saving whenever the player passes the level and, when he's in mine, he uses the game loading function. What is solving this problem is that I put the save function in "D", which is the character's movement key, but I can't get the script to load what was saved, I tried several things, but it isn't working properly.

    Note: My game is 2D

    This is the script that saves the game

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


    public class SaveData: MonoBehaviour
    {
    public checkpoint;
    public Vector3 temp;
    public button Fire1;



    // The start is called before the first frame update
    void Start ()
    {
    temp = transform.position;

    }

    // Update is called once per frame
    Null update ()
    {//
    if (Input.GetKeyDown (KeyCode.D))
    {
    print ("saves" + Application.persistentDataPath);
    To save ();
    }
    // Fire1 is part of the unit configuration, it is the default
    if (Input.GetButton ("Fire1"))
    {
    LoadPos ();
    }
    }
    void Save ()
    {
    BinaryFormatter bf = new BinaryFormatter ();
    FileStream fs = File.Create (Application.persistentDataPath + "/posData.data");

    SaveClass s = new SaveClass ();
    s.posx = transform.position.x;

    bf.Serialize (fs, s);
    fs.Close ();
    }

    void LoadPos ()
    {
    if (File.Exists (Application.persistentDataPath + "/posData.data"))
    {
    BinaryFormatter bf = new BinaryFormatter ();
    FileStream fs = File.Open (Application.persistentDataPath + "/posData.data", FileMode.Open);

    SaveClass s = (SaveClass) bf.Deserialize (fs);
    fs.Close ();

    temp.x = s.posx;
    transform.position = temp;
    }
    }

    }
    [Serializable]
    class SaveClass
    {
    public float posx;
    }

    And this is the menu that makes the game start and exit, but I can't get the game to continue loading what was saved

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using System.IO;
    using UnityEngine.UI;
    using System;

    public class Menu: MonoBehaviour {
    public button Fire1;


    public void Start ()
    {
    SceneManager.LoadScene (SceneManager.GetActiveScene (). BuildIndex + 1);
    }
    void LoadPos ()
    {

    // it's saving, so it's not restarting by the button to continue
    if (File.Exists (Application.persistentDataPath + "/posData.data"))
    {
    // look in the video class for the condition of why you configure or button inside the unit
    Fire1.interactable = true;
    }
    }

    Exit public empty ()
    {
    Application.Quit ();
    }

    void checkSaveGame ()
    {

    }


    }
    Hello