はじめに
目的
このガイドでは、Reactive SOをインストールし、最初のEvent Channelを作成する方法を説明します。ゲームシステムを疎結合化するための基本的なワークフローを学びます。
インストール
Reactive SOはUnity Package Manager経由でインストールします。
- Window > Package Manager を開く
- パッケージリストで Reactive SO を探す
- Install をクリック
Asset Storeで購入した場合は、My Assets タブからパッケージをインポートしてください。
クイックスタート - 最初のEvent Channel
ステップ1: Event Channelアセットを作成
Projectウィンドウで右クリックし、以下のメニューパスを選択します。
Create > Reactive SO > Channels > Void Event

名前を OnPlayerDeath にします。
ステップ2: イベントを発火(Publisher)
using Tang3cko.ReactiveSO;
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField] private VoidEventChannelSO onPlayerDeath;
public void Die()
{
onPlayerDeath?.RaiseEvent();
}
}
ステップ3: イベントを購読(Subscriber)
using Tang3cko.ReactiveSO;
using UnityEngine;
public class GameManager : MonoBehaviour
{
[SerializeField] private VoidEventChannelSO onPlayerDeath;
private void OnEnable()
{
onPlayerDeath.OnEventRaised += HandlePlayerDeath;
}
private void OnDisable()
{
onPlayerDeath.OnEventRaised -= HandlePlayerDeath;
}
private void HandlePlayerDeath()
{
Debug.Log("Game Over!");
}
}
ステップ4: Inspectorで接続
- Player GameObjectを選択
OnPlayerDeathアセットをシリアライズフィールドにドラッグ- GameManagerにも同様に設定

これで完了です!PlayerとGameManagerは疎結合になりました。
利用可能なイベントタイプ
| タイプ | 用途 | 例 |
|---|---|---|
| Void | データなしの通知 | OnGameStart, OnPlayerDeath |
| Int | 整数値 | OnScoreChanged, OnLevelUp |
| Float | 浮動小数点値 | OnHealthChanged, OnProgress |
| Bool | 真偽値 | OnPaused, OnMuted |
| String | テキストメッセージ | OnDialogue, OnNotification |
| Vector2 | 2D位置/方向 | OnInputAxis, OnTouchPosition |
| Vector3 | 3D位置/方向 | OnSpawnPosition, OnTargetPosition |
| Quaternion | 回転 | OnCameraRotation |
| Color | 色 | OnThemeChanged |
| GameObject | オブジェクト参照 | OnEnemySpawned, OnTargetChanged |
| Long | 大きな整数 | OnTimestamp |
| Double | 高精度小数 | OnPreciseValue |
詳細はEvent Typesリファレンスを参照してください。
ベストプラクティス
必ず購読解除する
OnDisableで購読解除してメモリリークを防止しましょう。
private void OnEnable()
{
eventChannel.OnEventRaised += HandleEvent;
}
private void OnDisable()
{
eventChannel.OnEventRaised -= HandleEvent; // 必須!
}
null条件演算子を使用
null参照例外を回避しましょう。
// 良い例
onPlayerDeath?.RaiseEvent();
// 悪い例 - 未割り当て時に例外
onPlayerDeath.RaiseEvent();
Inspectorで割り当て
イベントフローを可視化するために、コードで検索するのではなくInspectorでチャンネルを割り当てましょう。
動作を確認する
Monitor Windowを使って、イベントがリアルタイムで発火するのを確認しましょう。
- Window > Reactive SO > Monitor を開く
- Play Modeに入る
- プレイヤーの死亡をトリガー——イベントがログに即座に表示される
この観察可能性がReactive SOの中核です。アーキテクチャで何が起きているかを常に確認できます。
次のステップ
| やりたいこと | 参照 |
|---|---|
| 全イベントタイプを学ぶ | Event Typesリファレンス |
| システム間で状態を共有 | Variablesガイド |
| オブジェクトコレクションを追跡 | Runtime Setsガイド |
| エンティティ状態を管理 | Reactive Entity Setsガイド |
| イベントフローをデバッグ | デバッグ |
| アーキテクチャを理解 | Event Channelsガイド |