0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Unity】色々なシーンで使うクラス・定数・変数にはStaticを使おう

Posted at

はじめに

Unityでゲーム開発をしていると、「どのシーンからでもアクセスしたい変数やクラス」が出てくることがあります。そんなとき便利なのが static(スタティック)というキーワードです。

🔍 Staticとは?

static は「静的なもの」、つまりインスタンス化せずに直接使えるという意味です。

通常、クラスの変数やメソッドを使うにはこうします:

player.cs
Player player = new Player();
player.health = 100;

Unityでは,GameComponentごとにインスタンス化します.

でも static を使えば、こんなふうに 直接アクセス できます:

GameManager.score = 100;

⚙️ Staticを使うと何が起きるの?

  • ✅ インスタンス不要
    ゲームコンポーネント単位で設定する必要がない
  • ✅ どこからでもアクセス可能
    シーンをまたいでもアクセスできる(メモリ上に残る)
  • ✅ 値が共有される
    すべてのスクリプトで同じ値を参照・変更できる

🎯 具体的にStaticを使う場面

✅ ゲーム全体で共有するスコア・設定

public static class GameManager
{
    public static int score = 0;
    public static bool isSoundOn = true;
}

これならどのシーンのスクリプトからでも、

GameManager.score += 10;

と簡単に使えます。

✅ 共通定数(タグ名やレイヤー名など)

public static class Tags
{
    public const string PLAYER = "Player";
    public const string ENEMY = "Enemy";
}

ハードコーディングせずに、

if (collision.tag == Tags.PLAYER)

と書くことで、間違いも減ってメンテナンスも楽になります。

✅ ユーティリティクラス(汎用処理)

public static class Utils
{
    public static float GetRandom(float min, float max)
    {
        return UnityEngine.Random.Range(min, max);
    }
}

使うときは:

float speed = Utils.GetRandom(1f, 5f);

❗️Staticの注意点
破棄されない:シーンが変わっても残る。なので、明示的な初期化が必要。

依存しすぎ注意:何でも static にすると、テストしづらくなる・スパゲッティコード化の恐れも。

オブジェクトへの依存NG:GameObject や MonoBehaviour を static に持たせるのは避けよう(null や破棄の問題が起きやすい)。

✅ まとめ

よく使う用途 static にすべき?
スコアや設定など全体共有 ✅ Yes
タグ名やレイヤー名など定数 ✅ Yes
一度だけ使う変数 ❌ No
MonoBehaviour(Transformなど) ❌ 基本的に No

static は便利な機能ですが、どこでも使える=どこからでも壊せるというリスクもあります。目的を明確にして、うまく使いこなしましょう!

✍️ おわりに

static は非常に便利で強力ですが、間違って使うとアプリ全体にバグを引き起こすこともあるため、慎重に扱う必要があります。

  • 値を共有したいときに限定する

  • 直接アクセスよりもプロパティ経由にする

  • MonoBehaviourとは切り離す

この3つを意識して、安全に static を活用していきましょう!

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?