コガネブログ

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

【Unity】UnityEvent に登録されている非永続的なリスナーの情報を Inspector に表示できる「UnityEventDrawerEx」紹介

はじめに

「UnityEventDrawerEx」を Unity プロジェクトに導入することで
UnityEvent に登録されている非永続的なリスナーの情報を
Inspector に表示できるようになります

導入方法

https://github.com/mob-sakai/UnityEventDrawerEx/releases

上記のページから「UnityEventDrawerEx.unitypackage」をダウンロードして
Unity プロジェクトにインポートします

使い方

f:id:baba_s:20180607093931p:plain

「UnityEventDrawerEx」を Unity プロジェクトに導入すると、
Inspector の UnityEvent の欄に「Show runtime calls」という項目が追加されます

この状態で、

using UnityEngine;
using UnityEngine.UI;

public class Example : MonoBehaviour
{
    public Button m_button;

    private void Awake()
    {
        m_button.onClick.AddListener( () => print( "ピカチュウ" ) );
        m_button.onClick.AddListener( InstanceHandle );
        m_button.onClick.AddListener( StaticHandle );
    }

    private void InstanceHandle()
    {
        print( "ライチュウ" );
    }

    private static void StaticHandle()
    {
        print( "ゴロチュウ" );
    }
}

上記のような、UnityEvent に非永続的なリスナーを追加するコードを動かすと

f:id:baba_s:20180607094026p:plain

このように、UnityEvent に登録されている非永続的なリスナーの情報を
Inspector で確認できるようになります

ラムダ式で登録した場合は、登録処理が記載された関数の名前がわかります
通常の関数を登録した場合は、登録した関数の名前や、
そのスクリプトがアタッチされているゲームオブジェクトがわかります
static な関数を登録した場合は、登録した関数の名前がわかります