Scriptable Factory
The Scriptable Factory system is a ScriptableObject-based factory and object pooling framework for Unity. It provides a centralized pattern for defining, registering, spawning, despawning, and pooling game objects with support for data-driven variants and field-level overrides.
Architecture
Data Flow
Key Concepts
ScriptableFactoryRegistry
Singleton ScriptableObject that auto-discovers and stores all ScriptableFactory assets in the project. Central lookup point.
ScriptableFactoryManager
Singleton MonoBehaviour that initializes all factories at runtime, creates monitors, and manages lifecycle.
ScriptableFactoryMonitor
MonoBehaviour attached to each factory's runtime GameObject, enabling Inspector inspection of factory state.
ScriptableFactoryDatabase
Generic singleton for game-specific factory lookups by hash code. Subclass per factory type.
FactorableData
Abstract record base class for serializable data attached to factory objects. Supports deep/shallow copying.
FactorableDataUtility
Internal utility for creating deep and shallow copies of FactorableData using Odin serialization.
System Lifecycle
Editor time:
ScriptableFactoryRegistry.Initialize()runs via[InitializeOnLoadMethod], scanning allScriptableFactoryassets and populating the registry.Runtime startup:
ScriptableFactoryManager.Start()initializes all registered factories (creates GameObjects, parents them), createsScriptableFactoryMonitorcomponents, then callsStart()on each factory.Runtime usage: Game code spawns/despawns objects through factory instances retrieved from the registry or a
ScriptableFactoryDatabase.Application quit:
ScriptableFactoryManager.OnApplicationQuit()callsOnQuit()on all factories for cleanup.
Quick Start
Retrieving a Factory
Creating a Custom Database
Classes
Central registry of all factory assets
Runtime lifecycle manager for factories
Inspector monitor component for factories
Generic hash-based factory lookup
Abstract record base for factory object data
Deep/shallow copy utility for data records
Last updated