Próbuje zrobić zapis ustawień w unity ale mam taki błąd
SerializationException: End of Stream encountered before parsing was completed.
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run () (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
Settings.Load () (at Assets/Scripts/Settings/Settings.cs:54)
Settings.Start () (at Assets/Scripts/Settings/Settings.cs:24)
A to mój kod
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
public class Settings : MonoBehaviour
{
public Slider musicSlider;
public Slider soundsSlider;
public GameObject music;
float musicVolume;
float soundsVolume;
AudioSource source;
// Start is called before the first frame update
void Start()
{
source = music.GetComponent<AudioSource>();
Load();
}
// Update is called once per frame
void Update()
{
}
public void save()
{
musicVolume = musicSlider.value;
source.volume = musicVolume;
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream saveSettings = File.Create(Application.persistentDataPath + "/Settings.txt");
Settings settings = new Settings();
settings.musicVolume = musicVolume;
settings.soundsVolume = soundsVolume;
binaryFormatter.Serialize(saveSettings, settings);
saveSettings.Close();
}
public void Load()
{
if(File.Exists(Application.persistentDataPath + "/Settings.s"))
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream saveSettings = File.Open(Application.persistentDataPath + "/Settings.txt", FileMode.Open);
Settings settings = (Settings)binaryFormatter.Deserialize(saveSettings);
saveSettings.Close();
musicVolume = settings.musicVolume;
soundsVolume = settings.soundsVolume;
musicSlider.value = musicVolume;
soundsSlider.value = soundsVolume;
}
}
}
[Serializable]
class SEttings
{
float musicVolume;
float soundsVolume;
}