コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】UniRx の MessageBroker で Pub / Sub を実装する方法

通知用のクラスや構造体を用意

// スコアが加算されたことを通知するクラス
public class ScoreAddSignal
{
    public int Score { get; set; }
}

イベント発行側の実装

public class Example : MonoBehaviour
{
    private void Update()
    {
        // スペースキーが押されたら
        if ( Input.GetKeyDown( KeyCode.Space ) )
        {
            // スコアが加算されたことを通知する
            MessageBroker.Default
                .Publish( new ScoreAddSignal { Score = 5 } );
        }
    }
}

イベント購読側の実装

public class GameManager : MonoBehaviour
{
    public int m_score;

    private void Awake()
    {
        // スコアが加算されたことが通知されたら
        // スコアを加算する
        MessageBroker.Default
            .Receive<ScoreAddSignal>()
            .Subscribe( x => m_score += x.Score )
            ;
    }
}