IDayNight

Используется UI управления сохранениями игр (см. SaveCatalog) для формирования отметки игрового времени в метаданных файла сохранения.

public interface IDayNight
{
    public string GameTime { get; set; } // Текстовое отображение текущие время
    public string GameDays { get; set; } // Текстовое отображение текущий номер суток
}

В простом случае, когда у Вас слабо выраженное течение времени в игре, можно вообще не использовать реализацию класса DayNight, а в самом классе World реализовать IDayNight. Например:

public class World : MonoBehaviour, IDayNight
{
    public int year = 0;
    public int quarter = 0;

    public string GameTime
    {
        get { return year.ToString(); }
        set { year = int.Parse(value); }
    }
    public string GameDays
    {
        get { return quarter.ToString(); }
        set { quarter = int.Parse(value); }
    }
}

Но, а в более сложном случае, рекомендуется использовать реализацию класса DayNight.

alt

На диаграмме видно, что сущность DayNight технически разделена на несколько классов. С одной стороны это сделано, чтобы обойти ограничения Юнити, с другой чтобы была возможность расширить класс Tac.DayNigh из системы сохарений Tac.DConvertor используя т.н. линковку. Ограничение Юнити состоит в том, что на сцену в геймобъект нельзя добавить компонент, если он реализует интерфейс. Для этого выделяется родитель с техническим именем DayNight0. Тогда линкуясь к родителю DayNight0 из компонента Tac.DConvertor можно реализовать интерфейс IDayNight (выделенно ярко желтым).