1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-29

拡張メソッドというものを使うとより効率的にコードを書けるようになるらしい。
ということで試しに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標準クラスにメソッドを追加する方法

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?