ISaveSystem
Контракт для операций сохранения/загрузки по слотам, с уведомлениями о событиях.
Неудачное сохранение вызывает исключение. Оно никогда не возвращается молча, будто всё получилось: именно такой сбой отнимает у человека целый день.
Пространство имён: OpenMon.MCE.SDK
Определение
public interface ISaveSystem
{
void Save(int slot);
void Load(int slot);
bool HasSaveData(int slot);
void DeleteSave(int slot);
event Action<int> OnSaved;
event Action<int> OnLoaded;
}
engine.SaveSystem — это SaveSystemFacade. Save(slot) и Load(slot) лишь вызывают его события SaveRequested и LoadRequested, а OnSaved / OnLoaded срабатывают только тогда, когда движок вызывает NotifySaved / NotifyLoaded. В текущем движке эти запросы никто не обрабатывает и эти хуки никто не вызывает, а HasSaveData(slot) / DeleteSave(slot) работают с файлом slot{N}.sav в Application.persistentDataPath, который движок не записывает (движок сохраняет именованные папки в Saves/, см. руководство по системе сохранений). Для настоящих сохранений используйте внутриигровые меню или, в редакциях Source и Studio, SavegameManager.
Методы
Save(int slot)
Сохраняет текущее состояние игры в слот.
| Параметр | Тип | Описание |
|---|---|---|
slot | int | Индекс слота сохранения (обычно 0-2) |
Запрашивает сохранение всех зарегистрированных экземпляров SavableObject в файл JSON. Фактическая запись выполня ется в основанном на корутинах SavegameManager движка, поэтому считайте вызов асинхронным: подпишитесь на OnSaved, чтобы узнать, когда сохранение завершилось.
Load(int slot)
Загружает состояние игры из слота.
| Параметр | Тип | Описание |
|---|---|---|
slot | int | Индекс слота сохранения, из которого загружать |
Десериализует файл JSON и применяет состояние ко всем зарегистрированным экземплярам SavableObject. Может вызвать переходы между сценами, если сохранённая позиция находится в другой сцене.
HasSaveData(int slot)
Проверяет, есть ли в слоте сохранения данные.
| Параметр | Тип | Описание |
|---|---|---|
slot | int | Индекс проверяемого слота сохранения |
Возвращает: bool -- true, если в слоте есть данные сох ранения.
DeleteSave(int slot)
Удаляет данные сохранения из слота.
| Параметр | Тип | Описание |
|---|---|---|
slot | int | Индекс удаляемого слота сохранения |
События
OnSaved
Вызывается после успешной операции сохранения.
Сигнатура: event Action<int> OnSaved
| Параметр | Тип | Описание |
|---|---|---|
slot | int | Слот, в который выполнено сохранение |
OnLoaded
Вызывается после успешной операции загрузки.
Сигнатура: event Action<int> OnLoaded
| Параметр | Тип |
|---|