Методы сохранения переменных в Unity: PlayerPrefs, сериализация, объекты сценариев и JSON.

  1. PlayerPrefs: Unity предоставляет класс PlayerPrefs, который позволяет легко сохранять и извлекать данные. Вы можете использовать PlayerPrefs для сохранения таких переменных, как целые числа, числа с плавающей запятой и строки. Данные PlayerPrefs хранятся в файле настроек проигрывателя.

Пример кода:

// Saving a variable
PlayerPrefs.SetInt("variableName", yourVariable);
// Retrieving a variable
int savedVariable = PlayerPrefs.GetInt("variableName");
  1. Сериализация: вы можете сериализовать переменную и сохранить ее в виде файла. Unity предоставляет встроенную систему сериализации, которая позволяет конвертировать объекты в сериализованный формат, который можно сохранить и загрузить позже.

Пример кода:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
// Saving a variable
YourClass yourObject = new YourClass();
BinaryFormatter formatter = new BinaryFormatter();
FileStream fileStream = File.Create(Application.persistentDataPath + "/save.dat");
formatter.Serialize(fileStream, yourObject);
fileStream.Close();
// Loading a variable
fileStream = File.Open(Application.persistentDataPath + "/save.dat", FileMode.Open);
YourClass loadedObject = (YourClass)formatter.Deserialize(fileStream);
fileStream.Close();
  1. Сериализация JSON: Unity также поддерживает сериализацию JSON, которая позволяет преобразовать переменную в строку JSON и сохранить ее в виде файла.

Пример кода:

using System.IO;
using UnityEngine;
using Newtonsoft.Json;
// Saving a variable
YourClass yourObject = new YourClass();
string jsonString = JsonConvert.SerializeObject(yourObject);
File.WriteAllText(Application.persistentDataPath + "/save.json", jsonString);
// Loading a variable
string loadedJson = File.ReadAllText(Application.persistentDataPath + "/save.json");
YourClass loadedObject = JsonConvert.DeserializeObject<YourClass>(loadedJson);
  1. Скриптовые объекты: Скриптовые объекты Unity — это ресурсы, которые могут хранить данные и сохраняться как часть вашего проекта. Вы можете создать объект Scriptable для хранения вашей переменной, а затем ссылаться на нее из других скриптов.

Пример кода:

using UnityEngine;
// Creating a Scriptable Object
[CreateAssetMenu(fileName = "NewVariable", menuName = "Custom/Variable")]
public class VariableObject : ScriptableObject
{
    public int yourVariable;
}
// Accessing the Scriptable Object
public class YourClass : MonoBehaviour
{
    public VariableObject variableObject;
    private void Start()
    {
        int savedVariable = variableObject.yourVariable;
    }
}