コガネブログ

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

【Unity】シンプルなメッセージバス「KLab Message Buses for Unity」紹介

はじめに

「KLab Message Buses for Unity」を Unity プロジェクトに導入することで
シンプルなメッセージバスを使用できるようになります

使用例

送信側のスクリプト

using KLab.MessageBuses;
using UnityEngine;

// メッセージの型
public class MyMessageBus : MessageBus<string> { }

public class Example1 : MonoBehaviour
{
    private MyMessageBus m_bus;

    private void Start()
    {
        m_bus = MessageBus.GetBus<MyMessageBus>();
    }

    // 毎フレーム
    private void Update()
    {
        // メッセージを送信
        m_bus.Broadcast( "ピカチュウ" );
    }
}

受信側のスクリプト

using KLab.MessageBuses;
using UnityEngine;

public class Example2 : MonoBehaviour
{
    // メッセージを受信する関数
    private void OnMessage( string message )
    {
        // メッセージを受信したらログ出力
        Debug.Log( message );
    }

    // オブジェクトが有効になったら
    private void OnEnable()
    {
        // メッセージの受信する関数を登録
        MessageBus
            .GetBus<MyMessageBus>()
            .Connect( OnMessage )
        ;
    }

    // オブジェクトが無効になったら
    private void OnDisable()
    {
        // メッセージの受信する関数を解除
        MessageBus
            .GetBus<MyMessageBus>()
            .Disconnect( OnMessage )
        ;
    }
}

関連記事