- Home /
 
               Question by 
               penguin21 · Oct 31, 2018 at 03:51 PM · 
                serializationsavesave data  
              
 
              Help with serialization
I want to create a save file with the statistics of levels and levels unlocked but it does not leave me by line 96 I will pass the script and the saved class: Script:
 using System.Collections;
 using System.Collections.Generic;
 using System;
 using System.IO;
 using System.Runtime.Serialization.Formatters.Binary;
 using UnityEngine;
 
 public class SaveGame : MonoBehaviour {
 
     public string saveName = "file1.sav";
     public static Level[] levelsList;
     public Level[] tempList;
     public lvlPrefs[] lvlConf;
 
     // Use this for initialization
     void Start () {
         
     }
     
     // Update is called once per frame
     void Update () {
         levelsList = FindObjectsOfType(typeof(Level)) as Level[];
         tempList = levelsList;
     }
 }
 
 public static class SaveLoad
 {
     public static List<SaveFile> savedGames = new List<SaveFile>();
     public static List<LevelSave> savedLevels = new List<LevelSave>();
 
     //it's static so we can call it from anywhere
     public static void Save(string fileName, MapPre statManager)
     {
         //SaveLoad.savedGames.Add(SaveFile.current);
         BinaryFormatter bf = new BinaryFormatter();
         //Application.persistentDataPath is a string, so if you wanted you can put that into debug.log if you want to know where save games are located
         FileStream file = File.Create(Application.persistentDataPath + "/" + fileName); //you can call it anything you want
         SaveFile data = new SaveFile(statManager);
         bf.Serialize(file, data);
         file.Close();
         Debug.Log("Saved");
     }
 
     public static int[] Load(string fileName)
     {
         if (File.Exists(Application.persistentDataPath + "/" + fileName))
         {
             BinaryFormatter bf = new BinaryFormatter();
             FileStream file = new FileStream(Application.persistentDataPath + "/" + fileName, FileMode.Open);
             SaveFile data = bf.Deserialize(file) as SaveFile;
             file.Close();
             MapPre.tempMarioPos.x = data.mapPositionX;
             MapPre.tempMarioPos.y = data.mapPositionY;
             MapPre.tempMarioPos.z = data.mapPositionZ;
             //List<Level> levels = (List<Level>)bf.Deserialize(file);
             return data.stats;
             
         }
         else
         {
             Debug.LogError("File does not exist sorry :(.");
             return new int[4];
         }
     }
 }
 
 [Serializable]
 public class SaveFile
 {
     public static SaveFile current;
     public int[] stats;
     public float mapPositionX, mapPositionY, mapPositionZ;
     public Level[] levelForSave;
     public LevelSave[] levelData;
     public lvlPrefs[] lvlC;
     //public List<Level> levelList = new List<Level>();
 
     public SaveFile(MapPre player){
         stats = new int[5];
         stats[0] = player.coinCurrent;
         stats[1] = player.scoreCurrent;
         stats[2] = player.currentItemBox;
         stats[3] = player.currentLives;
         stats[4] = player.currentPowerUp;
         mapPositionX = player.marioPos.x;
         mapPositionY = player.marioPos.y;
         mapPositionZ = player.marioPos.z;
         levelForSave = new Level[SaveGame.levelsList.Length];
         lvlC = new lvlPrefs[SaveGame.levelsList.Length];
         for (int i = 0; i < SaveGame.levelsList.Length; i++)
         {
             
             levelForSave[i] = SaveGame.levelsList[i];
             Debug.Log(levelForSave[i].gameObject.name);
             lvlC[i].lastCamName = SaveGame.levelsList[i].lastCameraName;
             //levelData[i].lastCamName = levelForSave[i].lastCameraName;
         }
         //for(i)
     }
 }
 
Class:
 [Serializable]
 public class lvlPrefs
 {
     public GameObject obj;
     public string sceneName, lastCheckpointName, lastCamName;
     public bool StarCoin1, StarCoin2, StarCoin3, levelComplete;
 }
Error code:
 NullReferenceException: Object reference not set to an instance of an object
 SaveFile..ctor (.MapPre player) (at Assets/Scripts/SaveGame.cs:96)
 SaveLoad.Save (System.String fileName, .MapPre statManager) (at Assets/Scripts/SaveGame.cs:39)
 MapPre.saveData () (at Assets/Scripts/MapWorld/MapPre.cs:53)
 UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:166)
 UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
 UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
 UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
 UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
 UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
 UnityEngine.EventSystems.EventSystem:Update()
 
help me pls
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                