2.

Unity 入門 — ゲームエンジン概要 / Unity Hub / GameObject + Component / C# スクリプト

編集
この記事の要点
  • Unity は Unity Technologies 製のマルチプラットフォームゲームエンジン。2D / 3D / AR / VR 対応
  • Unity Hub でエディタのバージョン管理とプロジェクト管理。複数バージョン共存可
  • 中核概念: GameObject + Component アーキテクチャ。すべての要素は GameObject に Component を付ける形で構成
  • スクリプト言語は C#MonoBehaviour を継承し Start() / Update() を実装するのが基本
  • 出力先: Windows / macOS / Linux / iOS / Android / WebGL / PlayStation / Xbox / Switch。現行 LTS は 2022 LTS / 2023 LTS / Unity 6

Unity とは

Unity は Unity Technologies が開発する、世界で最も広く使われているマルチプラットフォームゲームエンジンです。2005 年に macOS 専用としてリリースされ、現在は Windows / macOS / Linux / iOS / Android / WebGL / 各種コンソール(PS5、Xbox、Switch)/ XR デバイスまで対応します。

モバイルゲーム市場では シェア 70% 以上と言われ、インディー〜中規模スタジオの定番。Pokémon GO、原神、Among Us、Hollow Knight、Cuphead 等の有名タイトルが Unity 製です。

Unity Hub とエディタ

Unity Hub は Unity エディタのバージョンを管理し、プロジェクトを起動するハブアプリです。複数の Unity バージョンを同時にインストール・切替できます。

バージョン位置付けリリース
Unity 2019 LTS古い LTS(サポート終了)2019
Unity 2020 LTSサポート終了2020
Unity 2021 LTSサポート終了間近2021
Unity 2022 LTS長期サポート版(現在の安定版)2022 (LTS: 2023)
Unity 2023 / Unity 6最新世代(2024 から Unity 6 に改名)2024〜

商用プロダクトでは LTS バージョンを選ぶのが定石です。

GameObject + Component アーキテクチャ

Unity の最重要概念。シーン内のすべての要素は GameObject という入れ物に、機能を持つ Component を組み合わせる形で表現されます。

要素役割
GameObjectシーンに存在する空の入れ物(位置・回転・スケールのみ持つ)
Transform全 GameObject が必ず持つ Component。位置 / 回転 / スケール
MeshRenderer見た目(メッシュ + マテリアル)
Collider衝突判定の形状(Box、Sphere、Mesh)
Rigidbody物理演算(重力・速度・力)
AudioSource音の再生
Script (MonoBehaviour)独自のロジックを書く C# クラス

C# スクリプトの基本

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5.0f;        // Inspector で編集可
    public GameObject bulletPrefab;   // Prefab 参照

    private Rigidbody rb;

    // 初期化(オブジェクト生成時に 1 回)
    void Start()
    {
        rb = GetComponent();
        Debug.Log("Player initialized!");
    }

    // 毎フレーム呼ばれる
    void Update()
    {
        // キーボード入力で移動
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 move = new Vector3(h, 0, v) * speed * Time.deltaTime;
        transform.Translate(move);

        // スペースキーで弾発射
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Instantiate(bulletPrefab, transform.position, transform.rotation);
        }
    }

    // 物理演算フレーム(一定間隔)
    void FixedUpdate()
    {
        // 物理の処理はここに書く
    }

    // 衝突検知
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Enemy"))
        {
            Debug.Log("Hit by enemy!");
            Destroy(gameObject);
        }
    }
}

Prefab(プレハブ)

Prefab は GameObject の再利用可能なテンプレート。一度作って、シーンに何度も配置・スクリプトから生成できます。1 つを変更すると全インスタンスに反映(バリアント機能で部分上書きも可)。

  • キャラクター、敵、弾、UI 要素、ステージ部品など使い回す対象は Prefab 化
  • シーンの GameObject を Project ウィンドウにドラッグ → Prefab 化
  • スクリプトから Instantiate(prefab, position, rotation) で生成

シーン

シーン (Scene) は GameObject の集合。タイトル画面、ステージ 1、ステージ 2、ゲームオーバー画面など、ゲームの画面単位です。SceneManager.LoadScene("Stage1") で切替。

物理エンジン

Component意味
Rigidbody3D 物理演算(重力・速度・摩擦)を有効に
Rigidbody2D2D 版
Collider衝突判定の形状(Box / Sphere / Capsule / Mesh)
Collider (Is Trigger)衝突せず通過するが検知だけする(アイテム取得等)
Joint2 つの Rigidbody を接続(ヒンジ、バネ等)

UI システム (uGUI)

Canvas + EventSystem の上に Image / Text / Button / Slider / Toggle 等を配置。TextMeshPro(TMP)が標準のテキスト描画。

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class UIManager : MonoBehaviour
{
    public TextMeshProUGUI scoreText;
    public Button startButton;

    private int score = 0;

    void Start()
    {
        startButton.onClick.AddListener(OnStartClicked);
        UpdateScore(0);
    }

    public void UpdateScore(int delta)
    {
        score += delta;
        scoreText.text = $"Score: {score}";
    }

    void OnStartClicked()
    {
        Debug.Log("Game start!");
    }
}

ビルドターゲット

File → Build Settings で出力先プラットフォームを切替:

  • Windows / macOS / Linux Standalone
  • Android(APK / AAB)— Android SDK + JDK が必要
  • iOS — macOS + Xcode が必須
  • WebGL — ブラウザ向け(itch.io、自社サイト)
  • PlayStation / Xbox / Nintendo Switch — プラットフォームホルダーの開発者登録が必要
  • Meta Quest / HoloLens / VisionOS — XR ビルド

レンダリングパイプライン

パイプライン用途特徴
Built-in従来型(メンテナンスモード)古いプロジェクト向け
URP (Universal RP)モバイル / WebGL / 中程度 PC軽量、汎用、新規プロジェクトの標準
HDRP (High Definition RP)ハイエンド PC / コンソール映画品質、要求スペック高い

Asset Store とパッケージ

Unity Asset Store はモデル・テクスチャ・スクリプト・エフェクト等の素材を売買するマーケット。Package Manager で公式パッケージ(Cinemachine、Input System、TextMeshPro 等)を導入。

料金

  • Unity Personal: 年間売上 $200K 未満は無料
  • Unity Pro: 年間 $2,200 / シート(売上 $200K 以上の組織は必須)
  • Unity Industry: 製造業・建築向け

FAQ

Q: Unreal Engine とどちらを選ぶ?
A: Unity: モバイル、2D、中規模、C# スクリプト。Unreal: ハイエンド 3D、AAA タイトル、C++、ブループリント。学習曲線は Unity の方が緩やか。

Q: 2D ゲームに向いている?
A: 向いています。Sprite Renderer、2D Physics、Tilemap、2D Animation 等の専用機能が充実。Hollow Knight 等の有名 2D ゲームも Unity 製。

Q: C# を全く知らないが大丈夫?
A: 大丈夫。基本的なゲームロジックには C# の中級程度の知識で十分。Visual Scripting(ノードベース)も標準搭載。

Q: 2023 年の Runtime Fee 騒動はどうなった?
A: 2023 年に発表された「インストール数課金」は強い反発で撤回されました。2024 年以降は従来の年間ライセンス制に戻り、Unity Pro の値上げで対応する形になっています。

編集
Post Share
子ページ
  1. Unityの導入方法
  2. エディタ(画面)の説明
  3. プロジェクトの作成と削除
  4. オブジェクト
  5. コンポーネント
  6. スクリプト
  7. アセットのインポート方法
  8. ゲームの実行/一時停止/コマ送り
  9. パッケージのインポート
  10. ゲームの公開(Build)方法
  11. 重力の変更
  12. 用語集
  13. エラー一覧
  14. おすすめアセット一覧
同階層のページ
  1. Unreal Engine 5 (UE5)
  2. Unity