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;
Variables
自動変更検出付きのリアクティブな共有状態。
// 値の変更で自動的にイベントが発火
playerHealth.Value = 100;
playerHealth.OnValueChanged += UpdateHealthUI;
Runtime Sets
シングルトンなしで動的オブジェクトコレクションを管理。
// シーン内の全敵を追跡
enemySet.Add(this.gameObject);
foreach (var enemy in enemySet.Items) { ... }
Reactive Entity Sets
シーンに依存しない集中型エンティティ状態管理。
// シーンに依存しないO(1)アクセスの状態管理
entitySet.Register(entityId, new EntityData { ... });
追加機能
ActionSO
ScriptableObjectアセットとして実装されたCommandパターン。再利用可能なアクションを定義し、Inspectorで設定、Play Mode中に手動実行してテストできます。
R3連携
R3がインストールされている場合、Event ChannelsとReactive Entity SetsをObservableストリームに変換し、リアクティブプログラミングのワークフローに統合できます。
はじめに
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 以上