Что это: SaveableBehaviour — базовый MonoBehaviour для компонентов, которые должны участвовать в системе сохранений. Файл: Scripts/Save/SaveableBehaviour.cs, пространство имён: Neo.Save.
Как использовать:
- Наследуйте свой компонент от
SaveableBehaviour. - Пометьте сохраняемые поля атрибутом
[SaveField("key")]. - При необходимости переопределите
OnDataLoaded(). - Если нужен собственный стабильный ключ, дополнительно реализуйте
ISaveIdentityProvider.
- Автоматически вызывает
SaveManager.Register(this)вOnEnable(). - Автоматически вызывает
SaveManager.Unregister(this)вOnDisable(). - Уже реализует
ISaveableComponent, поэтому вам остаётся только переопределитьOnDataLoaded()при необходимости.
Это самый простой способ подключить компонент к SaveManager без ручной регистрации.
Используйте SaveableBehaviour, если:
- компонент живёт на объекте сцены;
- у компонента есть сериализуемые поля, которые должны сохраняться;
- вам нужен минимальный boilerplate.
Если регистрация должна управляться вручную или компонент не должен зависеть от базового класса, можно реализовать ISaveableComponent самостоятельно.
Текущая версия класса не только регистрирует компонент при включении, но и корректно удаляет его из save-реестра при выключении. Это важно для:
- временно отключаемых объектов;
- объектов, которые уничтожаются в runtime;
- избежания устаревших ссылок в статическом реестре
SaveManager.
using Neo.Save;
using UnityEngine;
public class PlayerScore : SaveableBehaviour
{
[SaveField("score")] [SerializeField] private int _score;
[SaveField("best-score")] [SerializeField] private int _bestScore;
public override void OnDataLoaded()
{
Debug.Log($"Loaded score: {_score}, best: {_bestScore}");
}
}- Не сохраняет поля автоматически без
[SaveField]. - Не создаёт
SaveManagerсам по себе. - Не даёт custom identity автоматически. Для этого нужен
ISaveIdentityProvider.