/// /// Base class for a high-level game mode handled by . /// Modes are plain C# classes (not MonoBehaviours); Enter/Exit/Tick are driven /// manually by the manager. Derive from this and register an instance in /// GameModeManager.BuildModes(). /// public abstract class GameMode { protected GameModeManager Manager { get; private set; } /// Human-readable name (shown in logs). public abstract string DisplayName { get; } internal void Bind(GameModeManager manager) => Manager = manager; /// Called once when this mode becomes active. public virtual void Enter() { } /// Called once when this mode stops being active. public virtual void Exit() { } /// Called every frame while this mode is active. public virtual void Tick() { } }