scriptableobject-architecture

Creates ScriptableObject-based channels, runtime collections, and config data for Unity games.

2|Updated Apr 26, 2026
One-click install
npx skills add https://github.com/paek678/BuildUp --skill scriptableobject-architecture-paek678
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: scriptableobject-architecture
Source: https://github.com/paek678/BuildUp/tree/main/skills/01-architecture/scriptableobject-architecture
Command: npx skills add https://github.com/paek678/BuildUp --skill scriptableobject-architecture-paek678

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Decouples data and logic in Unity projects by using ScriptableObjects as the single source of truth for configuration, signals, and runtime collections.

Core Features & Use Cases

  • Data-driven configuration: create ScriptableObject-based data containers (e.g., WeaponConfigSO) to store constants and tweakable values without code changes.
  • Event channels: use GameEventSO to broadcast signals between systems without direct references.
  • Runtime sets: leverage RuntimeSetSO<T> to track active objects (enemies, pickups) without Find() calls.
  • Cross-scene data sharing: persist shared data across scenes via ScriptableObjects and dedicated managers.

Quick Start

Create a new ScriptableObject asset from the templates and wire it to a game object to start using SO-based data, events, and runtime sets.

Frequently Asked Questions about scriptableobject-architecture

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I decouple data and behavior in Unity using ScriptableObjects?

You can decouple data and behavior by using ScriptableObjects as the single source of truth for configuration, signals, and runtime collections, keeping data separate from game logic.

What is the best way to broadcast events between Unity systems without direct references?

Event channels use GameEventSO assets to broadcast signals between Unity systems without direct references, allowing decoupled communication across different scenes and components.

How do I track active enemies or pickups in Unity without using Find() calls?

Runtime sets leverage RuntimeSetSO<T> to track active objects like enemies or pickups without Find() calls, maintaining dynamic collections of objects currently active in the game.

Can I share configuration data across multiple Unity scenes with ScriptableObjects?

Yes, you can persist shared data across scenes via ScriptableObjects and dedicated managers, ensuring configuration values remain consistent and accessible throughout different scene loads.

How do I create data-driven configuration for weapons or items in Unity?

Create ScriptableObject-based data containers like WeaponConfigSO to store constants and tweakable values, allowing designers to adjust weapon or item parameters without code changes.

Does this ScriptableObject architecture require specific editor patterns for validation?

The architecture requires ScriptableObject assets with private serialized fields and public getters, plus editor patterns for safe reset and validation to ensure data integrity.