「クラスって何のこと?設計図?」
C#を少し書くようになると、必ずクラス(class)という言葉に出会います。
難しく聞こえますが、クラスは「データと処理を1つにまとめた設計図」だと考えてください。
Unityのスクリプト1ファイルも、実は1つのクラスなのです。
この記事では、クラスの基本、フィールドとメソッド、MonoBehaviourとの関係、敵データをまとめるゲーム向けの例まで解説します。
継承を学ぶ前の橋渡しとして読んでください。
- classという単語の意味が分からず、スクリプトの構造全体が見えない
- MonoBehaviourと普通のクラスの違いが整理できていない
- 敵のHPや攻撃力をバラバラの変数で管理して、コードが散らかっている
✨ この記事でわかること
- クラスとは何か(設計図のイメージ)
- フィールドとメソッドの関係
- MonoBehaviourクラスとの違い
- 敵データクラスの具体例
- newでインスタンスを作る考え方
- 初心者でも理解できる解説
\プログラミング未経験でも大丈夫!まずは1本作り切ろう/
初心者が最初に選ぶならコレ
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。
憧れのアクションゲームに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。
3Dゲーム開発の入口はここ
ゼルダ風3Dアクションゲーム
の作り方講座
「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。
クラスとは何か
クラスは、同じ種類のデータと処理をまとめた型です。
現実世界の「設計図」に例えると分かりやすいでしょう。
「敵キャラクター」という設計図があれば、HP、攻撃力、名前といったデータ(フィールド)と、攻撃する・ダメージを受けるといった処理(メソッド)がセットで定義されます。
この設計図がクラスです。
設計図から実際の敵を作ることをインスタンス化といい、newキーワードで作ります。
スライム用、ゴーレム用と、同じクラスから複数の敵データを作れます。
public class EnemyData
{
public string enemyName;
public int hp;
public int attackPower;
public void TakeDamage(int damage)
{
hp -= damage;
}
}
フィールドとメソッド
クラスの中身は、大きく2種類に分かれます。
| 要素 | 役割 | 例 |
|---|---|---|
| フィールド(変数) | そのオブジェクトが持つデータ | hp、moveSpeed、enemyName |
| メソッド(関数) | そのオブジェクトができる処理 | Attack、TakeDamage、Move |
「敵はHPを持っている(フィールド)」「敵はダメージを受けられる(メソッド)」のように、データと処理がセットでクラスに入っています。
バラバラの変数より、EnemyDataにまとめた方が管理しやすくなります。
MonoBehaviourクラスとの関係
Unityで最もよく書くクラスが、MonoBehaviourを継承したクラスです。
PlayerMoveやEnemyControllerなど、GameObjectにアタッチするスクリプトはこれに当たります。
using UnityEngine;
public class EnemyController : MonoBehaviour
{
[SerializeField] private int hp = 50;
void Update
{
// 毎フレームの処理
}
public void TakeDamage(int amount)
{
hp -= amount;
}
}
MonoBehaviourを継承すると、Unityのライフサイクル(Start、Updateなど)が使え、GameObjectに付けられるようになります。
一方、先ほどのEnemyDataのようにMonoBehaviourを継承しないクラスは、GameObjectには直接付けられませんが、データの整理用として使えます。
使い分けの目安は次のとおりです。
- MonoBehaviour:シーン上で動く、Updateが必要、GameObjectに付ける
- 通常のクラス:データの保持、計算ロジック、設定値のまとめ

最初はMonoBehaviourだけで十分です。
敵の種類が増えて「データだけ別管理したい」と感じたら、通常クラスを追加していきましょう。
敵データクラスのゲーム向け例
複数種類の敵を扱うゲームでは、データクラスとMonoBehaviourを組み合わせる構成がよく使われます。
using UnityEngine;
[System.Serializable]
public class EnemyData
{
public string enemyName = "Slime";
public int maxHp = 30;
public int attackPower = 5;
public float moveSpeed = 2f;
}
public class Enemy : MonoBehaviour
{
[SerializeField] private EnemyData data;
private int currentHp;
void Start
{
currentHp = data.maxHp;
Debug.Log(data.enemyName + " 出現 HP:" + currentHp);
}
void Update
{
transform.Translate(Vector3.left * data.moveSpeed * Time.deltaTime);
}
public void TakeDamage(int amount)
{
currentHp -= amount;
if (currentHp <= 0)
{
Debug.Log(data.enemyName + " 撃破");
Destroy(gameObject);
}
}
}
[System.Serializable]を付けると、EnemyDataがInspectorに表示され、スライム用・ゴーレム用と設定を画面から変えられます。
同じEnemyスクリプトで、見た目とデータだけ差し替える運用が可能です。
newでインスタンスを作る
通常のクラスは、newキーワードでインスタンス(実体)を作ります。
EnemyData slime = new EnemyData; slime.enemyName = "Slime"; slime.maxHp = 20; slime.attackPower = 3; EnemyData boss = new EnemyData; boss.enemyName = "Dragon"; boss.maxHp = 500; boss.attackPower = 50;
同じEnemyDataクラスから、slimeとbossという2つの別データが作れます。
設計図は1つ、作れる実体はいくつでも、というイメージです。
MonoBehaviourは、newではなくGameObjectにアタッチして使うのが基本です。
AddComponent<Enemy>で追加することもできますが、初心者はInspectorからドラッグ&ドロップの方が分かりやすいでしょう。
クラス設計のシンプルな考え方
クラス設計で最初に意識したいのは、「何のデータと処理をまとめるか」です。
全部を1クラスに詰め込む必要はありません。
- PlayerController:プレイヤーの入力と移動
- PlayerStatus:HP、スコア、レベル
- EnemyData:敵の名前、ステータス
- GameManager:ゲーム全体の状態(クリア、ゲームオーバー)
最初はPlayerController1つで始め、機能が増えたらクラスを分ける、という進め方で問題ありません。
完璧な設計より、動く状態を保ちながら少しずつ整理する方が現実的です。

クラスが理解できたら、次は継承で「共通の敵処理を親クラスにまとめる」学習に進めます。
いきなり難しい設計は不要。
今のコードを1クラスずつ理解していきましょう。
よくあるつまずき
クラスを学ぶ段階で、次の点に注意しましょう。
- ファイル名とクラス名の不一致 → Enemy.csの中身はclass Enemyにする
- MonoBehaviourなしでUpdateを書く → 通常クラスにはUpdateは自動で呼ばれない
- SerializeField忘れ → 通常クラスをInspectorに出すには[System.Serializable]が必要
- 設計に時間をかけすぎる → まず動かし、必要になったら分離する
エラーが出たら、Consoleのメッセージとクラス名・継承関係を確認してください。
クラスを増やすときは、「このデータはどこから触るか」を決めておくと安全です。
HPはPlayerStatusだけが変更する、スコアはGameManagerが管理する、と役割を分けると、あとから機能追加するときに迷いにくくなります。

「クラス=スクリプト1ファイル」とセットで覚えておけば、最初は十分です。
データクラスは、敵やアイテムが増えてからで遅くありませんよ。
記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも迷わず進められる丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。
全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。
「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- アセットを使った実践的なゲーム開発手法が身につく
- 画像・動画・全ソースコード公開の充実したサポート
ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。
全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。
「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!
まとめ
C#のクラスは、データ(フィールド)と処理(メソッド)をまとめた設計図です。
UnityではMonoBehaviourを継承したクラスがGameObjectに付くスクリプトになり、通常のクラスはデータ整理や計算に使えます。
EnemyDataのように[System.Serializable]付きのデータクラスを作ると、Inspectorから敵の設定を変えやすくなります。
newでインスタンスを作る考え方も、敵やアイテムの種類が増えるほど役立ちます。
変数→関数→クラスと進めてきた方は、次は継承で共通処理を親にまとめる学習が自然な流れです。
体系的に学びたい方は、Unity入門の森の講座も参考になります。
ゲーム完成までの流れの中で、クラス設計の考え方も身につけられます。
今日はEnemyDataを1つ定義するところから、試してみてください。



コメント