ゴミ箱

くだらないことからUnityの知識共有まで

Unity既存クラス拡張

Unityでは既存クラスを拡張できるらしい

拡張できると言ってもUnityの標準クラス(Transformとか)に自作のメソッドを追加することくらいしかできない。 しかも静的な拡張メソッドを作ることはできないみたい…。 拡張したメソッドを使いたかったら必ずインスタンス化しないといけません。 また、既存のstaticクラスにstatic変数を追加することもできなそう…。 Color.transparentみたいにしてColor(1f,1f,1f,0f)の透明とか作れないですかねUnity先生_:(´ཀ`」 ∠): 何かいい方法知っている方は教えてください

クラス拡張の方法

tsubakit1.hateblo.jp

個人的な使い所

昔はめられたButtonのAddListeners()メソッド。 使い回すボタンに何も考えずにアクションを追加していると、「追加」なので前のアクションが残っています。 それにはまって以降はAddListeners()関数を直接使うわず以下の拡張メソッドを使うようになりました。

using UnityEngine.UI;

public static class ButtonExtension
{
    /// <summary>
    /// 念のためボタンのアクションをリセットしてからセット
    /// </summary>
    public static void SetAction(this Button buttn, System.Action action)
    {
        buttn.onClick.RemoveAllListeners ();
        buttn.onClick.AddListener (()=>{
            action();
        });
    }
}

終わりに

細かいことですが、機能追加や不便なことを解決できる方法として知っておくと問題解決の幅が広がるかも(-ω- )o<