Reactive SO

Unity向けのScriptableObjectベースのリアクティブアーキテクチャ。Event Channels、Variables、Runtime Sets、Reactive Entity Setsを提供します。


目的

このドキュメントは、UnityプロジェクトでReactive SOを使用するために必要なすべてを網羅しています。インストール、設定、各機能の効果的な使い方を学びます。


なぜReactive SO?

従来のUnity開発では、コンポーネント間が密結合になりがちで、テストや保守が困難になります。Reactive SOはこれらの課題を4つのコア原則で解決します。

設計レベルでの疎結合

パブリッシャーとサブスクライバーはScriptableObjectアセットを介して通信します。シングルトンもFindObjectOfTypeも密結合もありません。

Inspector中心

イベントの接続、共有状態の設定、依存関係の確認——すべてInspectorで完結。コードを触らずにアーキテクチャを可視化・編集できます。

観察可能

実行中の状態をリアルタイムで確認できます。Monitor Windowはイベントの発火、変数の変更、セットの更新を表示。Asset BrowserとDependency Analyzerでプロジェクトの理解と保守をサポートします。

スケーラブル

Event Channelsでシンプルな通知から始めましょう。Variablesで状態共有、Runtime Setsでオブジェクト追跡。Reactive Entity Setsなら数万のエンティティをJob System統合で管理できます。


主な機能

Event Channels

ScriptableObjectアセットを使用したグローバルイベント通知。

// イベントを発火
onPlayerDeath?.RaiseEvent();

// イベントを購読
onPlayerDeath.OnEventRaised += HandlePlayerDeath;

Event Channelsの詳細

Variables

自動変更検出付きのリアクティブな共有状態。

// 値の変更で自動的にイベントが発火
playerHealth.Value = 100;
playerHealth.OnValueChanged += UpdateHealthUI;

Variablesの詳細

Runtime Sets

シングルトンなしで動的オブジェクトコレクションを管理。

// シーン内の全敵を追跡
enemySet.Add(this.gameObject);
foreach (var enemy in enemySet.Items) { ... }

Runtime Setsの詳細

Reactive Entity Sets

シーンに依存しない集中型エンティティ状態管理。

// シーンに依存しないO(1)アクセスの状態管理
entitySet.Register(entityId, new EntityData { ... });

Reactive Entity Setsの詳細


追加機能

ActionSO

ScriptableObjectアセットとして実装されたCommandパターン。再利用可能なアクションを定義し、Inspectorで設定、Play Mode中に手動実行してテストできます。

Actionsの詳細

R3連携

R3がインストールされている場合、Event ChannelsとReactive Entity SetsをObservableストリームに変換し、リアクティブプログラミングのワークフローに統合できます。

Integrationsの詳細


はじめに

Reactive SOをプロジェクトで使用する準備はできましたか?

はじめる


動作要件

  • v2.1.0以降: Unity 6000.0 (Unity 6.0) 以上
  • v1.1.1–v2.0.0: Unity 6000.2 (Unity 6.2) 以上
  • v1.0.0–v1.1.0: Unity 2022.3 以上

リンク


This site uses Just the Docs, a documentation theme for Jekyll.