【Unity】staticを使ったユーティリティクラス

【Unity】staticを使ったユーティリティクラス Unity
スポンサーリンク

staticクラス(静的クラス)とは

classの前にstaticをつけることで「staticクラス(静的クラス)」になります。

public static class Test
{
    public static int x = 0;
    public static void method(){}
}

// 通常は↓のような形
// public class Test: MonoBehaviour
// {
// }

staticクラスの場合、中に書く変数やメソッドにもstaticをつけます。

外部から呼び出して使うため、オブジェクトにアタッチする必要はありません。

また、MonoBehaviourを継承していないためStartやUpdateのようなUnityが自動で実行するメソッドは使用できません

使い方

ユーティリティクラスにはいろんなプロジェクトで使える汎用的な処理を書いていきます。

汎用的な処理というのは例えば「桁数の取得」や「文字列の操作」のような、毎回同じ記述で使いまわせるメソッドなどです。

今回は例として指定したカラーコードの色を取得するメソッドをユーティリティクラスに追加してみました。

/// <summary>
/// ユーティリティクラス
/// </summary>
public static class Utility
{
    /// <summary>
    /// カラーコードから色を取得
    /// </summary>
    /// <param name="colorCode">カラーコード</param>
    /// <returns>変換後の色</returns>
    public static Color GetColor(string colorCode)
    {
        if (ColorUtility.TryParseHtmlString(colorCode, out Color color))
        {
            return color;
        }
        else
        {
            // 変換に失敗した場合は初期値を返す
            return new Color(0.0f, 0.0f, 0.0f, 1.0f);
        }
    }
}

呼び出すときは「Using」や「GetComponent」などが不要で、以下のようにするだけで簡単に呼び出せます。

Color color = Utility.GetColor("#ABB1B3");

さいごに

ネットで調べてみると「ユーティリティクラスはオブジェクト指向に反しているので良くない」と書かれている記事がよく出てきます。

私はそこまでオブジェクト指向にこだわってるわけでは無いので、個人開発で使用する分には全く問題ないと思っています。

ただし、staticを使うことによるメリット・デメリットはあるので、何でもかんでもstaticにするのはやめた方が良さそうです。

コメント

タイトルとURLをコピーしました