初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

UnityのC#クラスとは | データと処理のまとめ方

Unity 基礎操作・設定

「クラスって何のこと?設計図?」

C#を少し書くようになると、必ずクラス(class)という言葉に出会います。
難しく聞こえますが、クラスは「データと処理を1つにまとめた設計図」だと考えてください。
Unityのスクリプト1ファイルも、実は1つのクラスなのです。

この記事では、クラスの基本、フィールドとメソッド、MonoBehaviourとの関係、敵データをまとめるゲーム向けの例まで解説します。
継承を学ぶ前の橋渡しとして読んでください。

  • classという単語の意味が分からず、スクリプトの構造全体が見えない
  • MonoBehaviourと普通のクラスの違いが整理できていない
  • 敵のHPや攻撃力をバラバラの変数で管理して、コードが散らかっている

この記事でわかること

  • クラスとは何か(設計図のイメージ)
  • フィールドとメソッドの関係
  • MonoBehaviourクラスとの違い
  • 敵データクラスの具体例
  • newでインスタンスを作る考え方
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で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をスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築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が作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風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つ定義するところから、試してみてください。

コメント

タイトルとURLをコピーしました