ScriptableObject Architecture

Teach advanced ScriptableObject patterns for Unity game architecture.

Updated Feb 15, 2026
One-click install
npx skills add https://github.com/ftnilsson/agent-cli --skill scriptableobject-architecture
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ScriptableObject Architecture
Source: https://github.com/ftnilsson/agent-cli/tree/main/unity-game-development/skills/07-scriptableobjects
Command: npx skills add https://github.com/ftnilsson/agent-cli --skill scriptableobject-architecture

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) and scripts (resource) components.

What problem does it solve?

This Skill addresses the complexity of structuring Unity projects by leveraging ScriptableObjects, moving beyond simple data containers to enable robust, data-driven design patterns.

Core Features & Use Cases

  • Data-Driven Design: Externalize game data (weapons, items, enemies) for easy designer tuning without code changes.
  • Decoupled Communication: Implement event systems using ScriptableObject Event Channels, eliminating direct dependencies between systems.
  • Shared Runtime State: Manage global state and track active objects with Runtime Sets and ScriptableObject Variables, avoiding singletons.
  • Pluggable Behaviors: Swap AI strategies, attack patterns, or other behaviors dynamically via Inspector-assigned ScriptableObject assets.
  • Extensible Data Types: Replace rigid C# enums with ScriptableObject assets for easily extendable game data types.
  • Custom Editor Tools: Enhance designer workflow with custom inspectors for ScriptableObjects.

Quick Start

Use the ScriptableObject Architecture skill to create a new WeaponData asset and configure its base damage and attack speed.

Frequently Asked Questions about ScriptableObject Architecture

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

FAQPage Schema
How do I decouple Unity systems without using singletons for shared game state?

You can decouple Unity systems by using ScriptableObject event channels and runtime sets to manage shared state, eliminating direct dependencies and avoiding singletons entirely.

What is the best way to structure game data in Unity so designers can tune items without code changes?

The best way to structure game data is through data-driven ScriptableObject containers, externalizing variables like weapon stats so designers can modify them directly in the Inspector without touching C# scripts.

Can I use ScriptableObjects to create an event system for inter-system communication in Unity?

Yes, you can implement an event system using ScriptableObject event channels, allowing decoupled communication between Unity systems without creating direct references or dependencies.

Do I need Unity 6 and C# scripting fundamentals to implement ScriptableObject architecture?

Yes, implementing ScriptableObject architecture requires Unity 6 and C# scripting fundamentals to properly set up data containers, runtime sets, and custom editor enhancements.

How do I replace rigid C# enums with a more extensible data type in Unity?

You can replace rigid C# enums by using ScriptableObject assets as extensible data types, making it easier to add new game data categories without modifying existing code.

How do I swap AI strategies dynamically in Unity without recompiling scripts?

You can swap AI strategies or attack patterns dynamically by using Inspector-assigned ScriptableObject assets to implement pluggable behavior strategy patterns in Unity.