| name | unity-singleton-pattern |
| description | Implementation of global manager access with strict lifecycle control. Supports Standard, Persistent, and Regulator variations. |
Unity Singleton Pattern
A robust suite of Singleton variations for global systems. Adheres to the Ohm-Yura project rule: "Use Singletons ONLY for global systems (GameManager, UIManager, InputManager)."
Core Features
- Singleton: Standard management. Destroys new duplicates to keep the original.
- PersistentSingleton: Extends Singleton with Don't Destroy On Load (DDOL) for cross-scene state.
- RegulatorSingleton: Advanced inverse logic. Destroys OLD instances and keeps the NEWEST (useful for hot-swapping).
- StaticInstance: Lightweight global access without duplication enforcement.
Core Files (Max 3)
SingletonBase.cs.txt: Generic base classes for classic and persistent variants.
SingletonRegulator.cs.txt: Logic for the time-stamped regulator variant.
SingletonExample.cs.txt: Concrete examples for Game and UI managers.
Usage
1. Standard Manager
public class UIManager : Singleton<UIManager> { }
2. Persistent Manager
public class InventoryManager : PersistentSingleton<InventoryManager> { }
3. Regulator (System Swap)
public class MusicSystem : RegulatorSingleton<MusicSystem> { }
Key Principle
Always use the most restrictive version. If it doesn't need to persist cross-scene, use Singleton<T>. If you just need a reference but don't mind duplicates, use StaticInstance<T>.