拡張メソッドというものを使うとより効率的にコードを書けるようになるらしい。
ということで試しに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とか拡張メソッド定義すればかなり便利になりそう。
また思いついたら何か書きます。