2
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にでてくるクラスとかインスタンスって何?

Last updated at Posted at 2025-11-10

はじめに

こんにちは。ShrineGate3544です。
今回はUnityにおけるクラスやインスタンスについての説明をします。

対象として「クラスってなに?全然わからん」といった方を想定していますが、Unityのコードに全く慣れていない方には少し難しいかもしれません。
分かりやすさを優先する都合上、一部省略している箇所がありますが、基本的な概念を理解するには十分だと思います。

クラスとは

では、実際にクラスとは何かについて見ていきましょう。

クラスがなかったら

クラスについて説明する前に、クラスが無かった時のことを考えてみましょう。

ゲームを作っていると、同じようなデータをたくさん作ることがあります。
ここでは、「敵キャラクターのデータ」を例にしましょう。ゴブリン、スライム、ドラゴン……それぞれにHPや攻撃力、守備力などの情報がありますよね。

でも、もしこれを全部一枚一枚スクリプトに書いていたら大変です。

// Goblin.cs
public class Goblin : MonoBehaviour {  //ゴブリンのデータ
    public int HP = 30;
    public int Attack = 10;
}

// slime.cs
public class Slime : MonoBehaviour{  //スライムのデータ
    public int HP = 2;
    public int Attack = 3;
}

// Dragon.cs
public class Dragon : MonoBehaviour {  //ドラゴンのデータ
    public int HP = 200;
    public int Attack = 50;
}

//以下、同じようなコードが続く...

こんなふうに敵ごとに新しいクラス(スクリプト)を作っていたら、似たようなコードがどんどん増えていきます。
「もう少し効率よくできないかな?」と思いますよね。

クラスの登場

そこで登場するのが クラス(class) です。

クラスはよく、「オブジェクト(実体)を作るための設計図」と表現されます。
この設計図には、オブジェクトが持つ様々な数値、関数を定義することができます。

先程の例で見てみましょう。

public class Enemy : MonoBehaviour //Enemyクラスの定義
{
    public string Name;
    public int HP;
    public int Attack;

    public void ShowStatus()
    {
        Debug.Log(Name + " のHPは " + HP + " です。");
    }
}

上のコードでは、Enemyクラスを定義しました。
ここには敵の基本的な情報と、ステータスを表示する関数が書かれています。

このクラスは、敵キャラクターを実装する際の一種の「テンプレート」のようなものです。

ゴブリンのデータを作りたいなら、テンプレートとなるEnemyクラスに適切な名前、HP、攻撃力を代入すればいいわけです。

クラスの利点

クラスを使うメリットをまとめておきましょう。
メリットはたくさんあります。
 

①同じようなコードを何度も書かなくていい
→ 共通の部分を一箇所にまとめられる。

②変更が楽になる
→ もしHPの扱いを変えたいなら、Enemyクラスだけ直せばいい。

③整理しやすくなる
→ 敵、プレイヤー、アイテムなどをそれぞれのクラスで分けられる。

ゲーム開発では、プレイヤー・敵・アイテム・魔法など、多くの「モノ(オブジェクト)」が登場します。
それらを整理するために、クラスという「設計図」を使うのです。

インスタンスとは

クラスの次は、インスタンスについて説明します。
インスタンスはクラスと深い関係があります。

インスタンスの作成

クラスを作っただけでは、ゲーム上には何も出てきません。
クラスをもとに、実体(インスタンス) を作る必要があります。

PowerPointやWordで言うなら、テンプレートを参考にして自分なりのスライドや書類を作る工程のことです。

実際のコードで見てみましょう。

void Start()
{
    Enemy goblin = new Enemy(); // <-goblinインスタンスを作成
    goblin.Name = "ゴブリン";
    goblin.HP = 30;
    goblin.Attack = 10;

    Enemy dragon = new Enemy(); // <-dragonインスタンスを作成
    dragon.Name = "ドラゴン";
    dragon.HP = 200;
    dragon.Attack = 50;

    goblin.ShowStatus();
    dragon.ShowStatus();
}

上のコードでは、先程のEnemyクラスを元に「goblin」と「dragon」という2つのインスタンスを作成しました。

 
インスタンスを作成する際は、

A inst = new A();  //「A」にはクラス名、「inst」にはインスタンス名を書く

という書き方をします。
PowerPointで言うと、テンプレートを選択して自分のプレゼンテーションを作成する作業です。

インスタンスの数値を変える 

先程のEnemyクラスには、Name・HP・Attackという3つの変数が定義されていました。
クラスというテンプレートをもとに作成されたインスタンスは、これらの変数を受け継いでいます。

それぞれの敵キャラをつくるには、これらの変数を適切なものに変更する必要があります。
そこで、このような書き方を使います。

goblin.Name = "ゴブリン"; //goblinインスタンスのNameという値を、「ゴブリン」に変更

この表記で、インスタンスの変数を適切なものに変更することができます。

インスタンスの関数を実行

関数の場合も、基本的には変数と同じです。

goblin.ShowStatus(); //goblinクラスのShowStatus関数を実行

goblinインスタンスは、Enemyクラスから受け継いだShowStatus関数を持っています。
この書き方をすることで、ShowStatus関数を実行することができます。

まとめ

今回は、クラスについて説明しました。
最初のうちはよく分からないかもしれませんが、Unityを使う上で非常に重要な概念となります。
実際にコードに触れてみたり、ネットで調べたりする中で少しずつ身につけていきましょう!

次回はクラスの継承についてです。

2
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
2
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?