Unity - Settings Manager (менеджер настроек и сохранений)
Unity - Settings Manager (менеджер настроек и сохранений) это класс в котором мы будем записывать пользовательские данные и считывать их. В нашем случае класс SettingsManager инстанцируется в StartupManager на сцене с загрузочным экраном.
В Unity пользовательские данные можно хранить в различных форматах, например, в json. Однако, если вы только начинаете работать с Unity, то лучше воспользоваться стандартными методами класса PlayerPrefs, который предлагается в Unity по умолчанию.
Стоит отметить, что PlayerPrefs подойдет для хранения небольшого количества данных, таких как: очки, здоровье, имя пользователя, язык. Если необходимо хранить более объемные данные, например, информацию об уровнях, координаты, прогресс прохождения, то лучше выбрать json формат для хранения или что-то еще.
Вне зависимости от вашего выбора и методов хранения данных SettingsManager будет идти впереди остальных менеджеров, т.к. через него они будут записывать и получать какие-либо сохраненные настройки и данные.
Как правило, SettingsManager будет намного сложнее, чем приведенный пример ниже, однако, для простых проектов данного примера с незначительными доработками может быть вполне достаточно:
Пример использования скрипта может выглядеть следующим образом, запишем и сразу получим какое-либо значение и выведем его в консоль:
В Unity пользовательские данные можно хранить в различных форматах, например, в json. Однако, если вы только начинаете работать с Unity, то лучше воспользоваться стандартными методами класса PlayerPrefs, который предлагается в Unity по умолчанию.
Стоит отметить, что PlayerPrefs подойдет для хранения небольшого количества данных, таких как: очки, здоровье, имя пользователя, язык. Если необходимо хранить более объемные данные, например, информацию об уровнях, координаты, прогресс прохождения, то лучше выбрать json формат для хранения или что-то еще.
Вне зависимости от вашего выбора и методов хранения данных SettingsManager будет идти впереди остальных менеджеров, т.к. через него они будут записывать и получать какие-либо сохраненные настройки и данные.
Как правило, SettingsManager будет намного сложнее, чем приведенный пример ниже, однако, для простых проектов данного примера с незначительными доработками может быть вполне достаточно:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class SettingsManager : MonoBehaviour {
// в Awake мы инициализируем класс и предотвращаем
// его удаление при открытии новой сцены
public static SettingsManager instance;
void Awake ()
{
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy (gameObject);
}
DontDestroyOnLoad (gameObject);
}
// PlayerPrefs.GetInt(key) - получаем ранее записанное
// значение (int) по ключу (string).
// PlayerPrefs.HasKey(key) - проверяем существует ли
// такое значение, если нет вернем 0
public int GetIntValue(string key)
{
int data = 0;
if(PlayerPrefs.HasKey(key))
{
data = PlayerPrefs.GetInt(key);
}
return data;
}
// PlayerPrefs.SetInt(key, value) - устанавливаем данные
// PlayerPrefs.Save() - записываем все изменения в постоянную память
public void SetIntValue(string key, int value)
{
PlayerPrefs.SetInt(key, value);
PlayerPrefs.Save();
}
}
Пример использования скрипта может выглядеть следующим образом, запишем и сразу получим какое-либо значение и выведем его в консоль:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class TestManager : MonoBehaviour {
void Start ()
{
SettingsManager.instance.SetIntValue("test", 555);
Debug.Log( SettingsManager.instance.GetIntValue("test") );
}
}