コガネブログ

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

【Unity】ゲームオブジェクト間でデータの送受信ができる「Signals」紹介

はじめに

「Signals」を Unity プロジェクトに導入することで
ゲームオブジェクト間でデータの送受信ができるようになります

使用例

送受信用のデータ

using UnityEngine;

// データ
public struct Data
{
    public int          m_id            ;
    public GameObject   m_gameObject    ;
}

データ受信クラス

using Homebrew;
using UnityEngine;

public class Reciever : MonoBehaviour, IReceive<Data>
{
    private void OnEnable()
    {
        // 登録
        ProcessingSignals.Default.Add( this );
    }

    private void OnDisable()
    {
        // 解除
        ProcessingSignals.Default.Remove( this );
    }

    public void HandleSignal( Data arg )
    {
        // 受信
        Debug.LogFormat( "{0} : {1}", arg.m_id, arg.m_gameObject.name );
    }
}

データ送信クラス

using Homebrew;
using UnityEngine;

public class Sender : MonoBehaviour
{
    private void Update()
    {
        // スペースキーが押された
        if ( Input.GetKeyDown( KeyCode.Space ) )
        {
            // データ作成
            var data = new Data
            {
                m_id            = 25,
                m_gameObject    = gameObject,
            };

            // 送信
            ProcessingSignals.Default.Send( data );
        }
    }
}

上記のようにスクリプトを作成することで使用できます