Unity Component Design
Overview
Design Unity components properly BEFORE writing code. Good architecture prevents rewrites.
When to Use
- •Creating new MonoBehaviour classes
- •Designing ScriptableObject data structures
- •Building new game systems
- •Refactoring existing components
The Process
Phase 1: Requirements Gathering
Ask these questions:
- •What problem does this component solve?
- •What data does it need?
- •What other systems does it interact with?
- •What events should it emit/receive?
- •Does similar functionality exist already?
Phase 2: Architecture Decision
Choose the right type:
| Use Case | Type |
|---|---|
| Needs lifecycle (Update, Start) | MonoBehaviour |
| Static game data (monster stats) | ScriptableObject |
| Pure logic, no Unity dependencies | C# class |
| Shared state across scenes | Singleton MonoBehaviour |
| One-off data container | [System.Serializable] class |
Phase 3: Design the Component
Use the unity-architect agent:
code
Task: Launch unity-architect agent with: "Design a [component type] for [purpose] that [requirements]"
The agent will provide:
- •Namespace and file location
- •Fields with types and attributes
- •Methods and their signatures
- •Events to emit
- •Dependencies to inject
- •Inspector setup requirements
Phase 4: Validate Design
Checklist before coding:
- • Follows VeilBreakers namespace convention
- • Uses [SerializeField] private, not public fields
- • Has [RequireComponent] for dependencies
- • Events have corresponding unsubscribe logic
- • No Find() or GetComponent() in hot paths
- • ScriptableObjects for config, not hardcoded values
Phase 5: Create Implementation Plan
Break into tasks:
- •Create the file with class skeleton
- •Add fields and serialization
- •Implement lifecycle methods
- •Add public API
- •Wire up events
- •Write tests (if applicable)
- •Create prefab (if applicable)
Quick Reference
| VeilBreakers System | Namespace | Base Class |
|---|---|---|
| Combat | VeilBreakers.Combat | MonoBehaviour or ScriptableObject |
| UI | VeilBreakers.UI | MonoBehaviour |
| Data | VeilBreakers.Data | ScriptableObject |
| Core | VeilBreakers.Core | MonoBehaviour (singleton) |
| Utils | VeilBreakers.Utils | Static class |
Related Skills
- •
superpowers:brainstorming- For exploring requirements - •
superpowers:writing-plans- For implementation planning