SaveCatalog

Вместе с классом SaveCatalog в пакете компонента TacSave предоставляется префаб (с тем же названием) для пользовательского интерфейса (UI) обеспечивающий сохранение игр. Внешний вид предоставлен ниже и обеспечивает разделение сохранений по директориям (прохождениям), позволяет сохранить и загрузить соответствующие файлы данных. Показ панели сохранения можно например реализовать в классе World нажатием F5 :

using Tac.Save;
public class World : MonoBehaviour
{
    private SaveCatalog SaveCatalog;
    private void Update()
    {
        if (Keyboard.current[Key.F5].wasPressedThisFrame)
        {
            if (SaveCatalog != null)
            {
                if (SaveCatalog.gameObject.activeSelf)
                {
                    SaveCatalog.gameObject.SetActive(false);
                }
                else
                {
                    SaveCatalog.gameObject.SetActive(true);
                }
            }
        }
    }
}

Префаб SaveCatalog должен быть помещен на сцену под элемент с Canvas в скрытом виде. Так же нужно поместить префаб DialogYouSure и перетянуть ссылку на него в класс SaveCatalog в поле DialogYouSure. Все остальные поля настроены по умолчанию.

alt

Для реализации функциональности использует интерфейсы IDayNight и ISaveManager (см. на диаграмме).

alt

Во время инициализации в компоненте World , нужно предоставить эти интерфейсы. Ниже пример кода, который это реализует.

        DayNight = GetComponent<DayNight>();
        ...
        GameObject ui = GameObject.Find("UI");
        if (ui != null)
        {
            SaveCatalog = ui.GetComponentInChildren<SaveCatalog>(true);
            SaveManager saveManager = GetComponent<SaveManager>();
            saveManager.World = this;
            SaveCatalog.ISaveManager = saveManager;
            SaveCatalog.IDayNight = DayNight as IDayNight;
        }

Класс SaveManager вам нужно реализовать самостоятельно, наследуясь от SaveManager0. Эта реализация позволит вам полностью контролировать сохранение данных и удаление/востановление объектов в сцене.