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. 演習課題
- Utilityクラスを作ろう
- GameUtils という static クラスを作り、「秒を分:秒に変換するメソッド」を実装する。
- 例:125秒 → “02:05"
- シーン共通の便利関数
- SceneLoader に「次のシーンをロードする」関数を追加してみよう。
まとめ
- static は「全体で共通して使える便利メソッド」をまとめるのに最適。
- ダメージ計算やシーン切り替えなど、現場でよく使う処理を一元管理するとコードがスッキリする。
- ただし、状態を持たせたい場合(HP、スコアなど)はインスタンスを使う方が適切。
訪問数 3 回, 今日の訪問数 3回
ディスカッション
コメント一覧
まだ、コメントがありません