Unityで学ぶ静的メソッドチュートリアル

「静的メソッド(static)」はクラスに属する関数であり、インスタンスを作らなくても呼び出せるのが特徴です。Unityでも便利に使える場面が多いので、実戦を意識したチュートリアルを作成します。


1. 静的メソッドとは

  • インスタンス不要で呼び出せるメソッド。
  • 共通処理や便利関数をまとめるのに最適。
  • ゲーム全体で共通して使う「ユーティリティクラス」を作るときによく登場。

2. サンプル1:数値計算をまとめる

例えば、ダメージ計算を毎回書くのは面倒。

DamageCalculator という静的クラスを用意して、全スクリプトから呼び出せるようにします。

public static class DamageCalculator
{
    // 攻撃力と防御力からダメージを計算する静的メソッド
    public static int CalculateDamage(int attack, int defense)
    {
        int damage = attack - defense;
        return Mathf.Max(damage, 1); // 最低1ダメージは保証
    }
}

使うとき:

public class Enemy : MonoBehaviour
{
    public int attack = 10;
    public int defense = 3;

    public void AttackPlayer(Player player)
    {
        int damage = DamageCalculator.CalculateDamage(attack, player.defense);
        Debug.Log($"{damage} のダメージを与えた!");
        player.TakeDamage(damage);
    }
}

3. サンプル2:ゲーム全体で共通するユーティリティ

たとえば「シーンを切り替える処理」を、あちこちに書くとバグの元。

共通化した SceneLoader を用意します。

using UnityEngine.SceneManagement;

public static class SceneLoader
{
    public static void Load(string sceneName)
    {
        SceneManager.LoadScene(sceneName);
    }

    public static void ReloadCurrent()
    {
        var current = SceneManager.GetActiveScene().name;
        SceneManager.LoadScene(current);
    }
}

使うとき:

// ゲームオーバー時にタイトルへ戻す
SceneLoader.Load("TitleScene");

4. サンプル3:ログ出力を一元管理

デバッグ用ログを静的メソッドにまとめておくと便利です。

public static class Logger
{
    public static void Log(string message)
    {
        Debug.Log($"[LOG] {message}");
    }

    public static void Warn(string message)
    {
        Debug.LogWarning($"[WARN] {message}");
    }

    public static void Error(string message)
    {
        Debug.LogError($"[ERROR] {message}");
    }
}

使うとき:

Logger.Log("プレイヤーがジャンプした");
Logger.Warn("HPが少なくなってきた");
Logger.Error("データが見つかりません");

5. 演習課題

  1. Utilityクラスを作ろう
    • GameUtils という static クラスを作り、「秒を分:秒に変換するメソッド」を実装する。
    • 例:125秒 → “02:05"
  2. シーン共通の便利関数
    • SceneLoader に「次のシーンをロードする」関数を追加してみよう。

まとめ

  • static は「全体で共通して使える便利メソッド」をまとめるのに最適。
  • ダメージ計算やシーン切り替えなど、現場でよく使う処理を一元管理するとコードがスッキリする。
  • ただし、状態を持たせたい場合(HP、スコアなど)はインスタンスを使う方が適切。

訪問数 3 回, 今日の訪問数 3回