はじめに


目的

このガイドでは、Reactive SOをインストールし、最初のEvent Channelを作成する方法を説明します。ゲームシステムを疎結合化するための基本的なワークフローを学びます。


インストール

Reactive SOはUnity Package Manager経由でインストールします。

  1. Window > Package Manager を開く
  2. パッケージリストで Reactive SO を探す
  3. Install をクリック

Asset Storeで購入した場合は、My Assets タブからパッケージをインポートしてください。


クイックスタート - 最初のEvent Channel

ステップ1: Event Channelアセットを作成

Projectウィンドウで右クリックし、以下のメニューパスを選択します。

Create > Reactive SO > Channels > Void Event

Create Menu

名前を 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で接続

  1. Player GameObjectを選択
  2. OnPlayerDeath アセットをシリアライズフィールドにドラッグ
  3. GameManagerにも同様に設定

Inspector Assignment

これで完了です!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を使って、イベントがリアルタイムで発火するのを確認しましょう。

  1. Window > Reactive SO > Monitor を開く
  2. Play Modeに入る
  3. プレイヤーの死亡をトリガー——イベントがログに即座に表示される

この観察可能性がReactive SOの中核です。アーキテクチャで何が起きているかを常に確認できます。

デバッグツールの詳細


次のステップ

やりたいこと 参照
全イベントタイプを学ぶ Event Typesリファレンス
システム間で状態を共有 Variablesガイド
オブジェクトコレクションを追跡 Runtime Setsガイド
エンティティ状態を管理 Reactive Entity Setsガイド
イベントフローをデバッグ デバッグ
アーキテクチャを理解 Event Channelsガイド

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