Unity3D
Unity

UnityActionの拡張メソッドを書いてみた

拡張メソッドというものを使うとより効率的にコードを書けるようになるらしい。
ということで試しにUnityActionの拡張メソッドを書いてみる。

1. 拡張メソッド使用前

特定の動作が終わった後callbackを呼ぶメソッド

Sample.cs
using UnityEngine.Events;

public class Sample
{
    public void Hogehoge(UnityAction callback = null)
    {
        // callbakを持ったメソッドを作るたびにnullチェックするのが不便
        if (callback != null)
        {
            callback();
        }
    }
}

2. 拡張メソッドを定義

下記のようなクラスでUnityActionに対して拡張メソッドを追加する

ActionTest1.cs
using UnityEngine.Events;

public static class SampleExtention 
{
    // 拡張メソッドを定義しnullチェックをここで行う
    public static void Call(this UnityAction action)
    {
        if (action != null)
        {
            action();
        }
    }
    else
    {
        Debug.Log("必要であればactionがnullの時の処理を追加");
    }
}

3. 拡張メソッド使用後

上記拡張メソッドを使うと下記のように書くことができる

SampleAfter.cs
using UnityEngine.Events;

public class SampleAfter
{
    public void Hogehoge(UnityAction callback = null)
    {
        // 拡張メソッドがnullチェックを行ってくれるので使用する側ではnullチェック不要
        callback.Call();
    }
}

enumとか拡張メソッド定義すればかなり便利になりそう。
また思いついたら何か書きます。

参考
Unity標準クラスにメソッドを追加する方法