Unity:基礎、アーキテクチャ、C#開発

著者: IT Sectr 公開日: 2026-05-02 読了時間: 9 分

Unityは、2Dおよび3Dアプリケーションを作成するためのクロスプラットフォームゲームエンジンで、モバイルプラットフォーム、デスクトップ、コンソール向けのビルドをサポートしています。ゲーム開発だけでなく、建築、自動車、小売などの非ゲームアプリケーションにも使用されています。Unity Technologies、2025年のデータによると、App Storeトップ1000のモバイルゲームの70%以上がUnityで作られています。C#はエンジンの主要プログラミング言語であり、ゲームロジック、コンポーネント、エディタースクリプトの記述に使用されます。

ポイント

  • Unity — 2D、3D、AR、VRをサポートするクロスプラットフォームゲームエンジン
  • C# — ゲームロジック、コンポーネント、エディタースクリプトを記述する主要言語
  • コンポーネントアーキテクチャ — オブジェクトの動作はコンポーネント(MonoBehaviour)から構築される
  • Asset Store — 既製のモデル、テクスチャ、サウンド、プラグインのマーケットプレイス
  • モバイルビルド — ARMアーキテクチャに最適化されたiOSおよびAndroid向けビルド

Unityとは?

Unityは、Unity Technologiesが2005年に開発したゲームおよびリアルタイムアプリケーション開発環境です。このエンジンはiOS、Android、Windows、macOS、PlayStation、Xbox、Nintendo Switch、WebGLを含む27のプラットフォームをサポートしています。Unity Gaming Report(2024年)によると、2023年にはUnityで月間30億以上のモバイルゲームがリリースされました。

Unityの主な特徴は、コンポーネント指向アーキテクチャです。シーン内の各オブジェクトは空のコンテナ(GameObject)であり、レンダリング、物理、サウンド、アニメーション、カスタムロジックなどの動作を定義するコンポーネントが追加されます。これにより、クラスの継承によって動作が定義されるUnreal Engineなどの階層型エンジンとは異なります。

Statista(2025年)によると、Unityはモバイルゲームエンジン市場の48%を占め、Unreal Engine(15%)や独自ソリューション(37%)を上回っています。インディースタジオは参入障壁の低さから、大手パブリッシャーは異なるプラットフォーム向けビルドパイプラインの柔軟性からこのエンジンを選択しています。

Unityのアーキテクチャ:シーン、オブジェクト、コンポーネント

Unityのアーキテクチャは、シーン、GameObjects、コンポーネント、プレハブの4つの基本概念に基づいています。この階層を理解することは、エンジンを効果的に使用するために不可欠です。

シーンとGameObjects

シーン(Scene)は、ゲームレベルまたはアプリケーション状態のすべてのオブジェクトを含むコンテナです。各シーンには独自のGameObjects、光源、カメラ、オーディオソースのセットがあります。シーン間の遷移はSceneManager.LoadScene()を介して行われます。

GameObjectはUnityの基本的な構成要素です。デフォルトでは視覚表現や動作を持たず、シーン階層内の空のノードです。すべての動作と外観はコンポーネントを介して追加されます。たとえば、GameObjectを可視化するにはMeshRendererを追加し、物理演算に従わせるにはRigidbodyを追加します。

MonoBehaviourコンポーネント

MonoBehaviourは、Unityのすべてのカスタムスクリプトの基本クラスです。ライフサイクルを提供します:Awake(オブジェクト読み込み時に呼び出し)、Start(最初のフレーム前)、Update(毎フレーム)、FixedUpdate(物理ステップごと)、OnDestroy(破棄時)。

各コンポーネントは、GetComponent<T>()を使用して同じGameObject上の他のコンポーネントと相互作用できます。これにより、モジュラーシステムの作成が可能になります。たとえば、HealthコンポーネントはMovementコンポーネントから独立できますが、両方ともUnityEventを介してイベントに応答できます。

プレハブ

プレハブ(Prefab)は、プロジェクトにアセットとして保存されたGameObjectテンプレートです。プレハブの変更は、シーン内のすべてのインスタンスに自動的に適用されます。これはUnityにおける再利用の中心的なメカニズムであり、反復を高速化しエラーを削減します。

プレハブはネスト(Nested Prefabs)をサポートしています。プレハブは他のプレハブを含むことができ、階層を形成します。たとえば、車のプレハブには、ホイール、エンジン、ボディのプレハブが含まれ、それぞれ独自のコンポーネントと設定を持ちます。

UnityでのC#コード例

C#での基本的なキャラクタームーブメントコンポーネントを見てみましょう。このスクリプトは、現在の回転に基づいてオブジェクトを前方に移動させ、ユーザー入力を処理します。

csharp
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 5f;

    void Update()
    {
        float move = Input.GetAxis("Vertical");
        Vector3 direction = transform.forward * move;
        CharacterController controller = GetComponent<CharacterController>();
        controller.SimpleMove(direction * speed);
    }
}

Update()メソッドは毎フレーム呼び出されます。Input.GetAxisは垂直入力を読み取り、SimpleMoveは物理演算で移動を適用します。CharacterControllerは、衝突物理を記述せずに衝突を処理する組み込みUnityコンポーネントです。

衝突処理とダメージ適用のスクリプト例:

csharp
using UnityEngine;

public class DamageHandler : MonoBehaviour
{
    public int health = 100;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Enemy"))
        {
            health -= 10;
            if (health <= 0)
            {
                Destroy(gameObject);
            }
        }
    }
}

OnCollisionEnterメソッドは、GameObjectが別のオブジェクトと衝突したときに物理エンジンによって呼び出されます。タグ比較(CompareTag)は、衝突が何と発生したかを判断します。このアプローチにより、コードを変更することなく、DamageHandlerコンポーネントをプレイヤー、敵、破壊可能オブジェクトに再利用できます。

Unityでのモバイルゲーム開発

Unityは、リソースが限られたモバイルデバイス向けにゲームを最適化するための専門ツールを提供しています。主要な最適化分野には、メモリ管理、ドローコールの削減、さまざまな画面解像度への適応が含まれます。

パフォーマンス最適化

モバイルプラットフォーム向けに、UnityはAsset Bundlesを提供しています。これは、リソースをオンデマンドで読み込むコンテンツパッケージングシステムで、アプリケーションの初期サイズを削減します。これは、アプリストアの制限によりすべてのアセットを一度に読み込むことができない、多くのレベルやキャラクターを持つゲームで特に重要です。

Unity Profilerを使用すると、ADB(Android)またはUSB(iOS)を介して実際のデバイス上のCPU、GPU、メモリ使用量を分析できます。Unity Documentation(2025年)によると、モバイルデバイスでドローコールを100〜300に最適化すると、ミッドレンジデバイスで安定した60 FPSが得られます。

タッチ入力とUI

モバイルゲーム向けに、UnityはInput Systemを使用しており、タッチコントロール、加速度計、ジャイロスコープを統一されたAPIの下で抽象化します。バーチャルジョイスティック、スワイプ、タップは、タッチ処理コードを記述せずにInput Action Assetsを介して設定されます。

UnityのUIシステム(uGUI)は、さまざまな画面アスペクト比に自動的にインターフェースを適応させるCanvas Scalerをサポートしています。Scale With Screen SizeモードのCanvas Scalerコンポーネントは、タブレットやスマートフォンでボタンが画面からはみ出さないことを保証します。

iOSとAndroid向けビルド

Unityでのモバイルゲームのビルドは、Build Settingsウィンドウを介して行われます。AndroidにはAndroid SDKとNDKが必要です。UnityはGradleプロジェクトを生成し、APKまたはAABにコンパイルします。iOSにはXcodeが必要です。UnityはObjective-C/Swiftラッパーを持つXcodeプロジェクトを作成し、最終的にAppleを介してコンパイルされます。

IL2CPPはC#コードをC++に変換し、さらにネイティブARMコードに変換するコンパイルオプションです。Unity Benchmark(2024年)によると、IL2CPPはMonoと比較してiOSおよびAndroidでパフォーマンスを15〜25%向上させますが、ビルド時間とバイナリサイズが増加します。

Unityと他エンジンの比較

Unityは、ゲームエンジン市場の主要な代替手段としてUnreal EngineやGodotと比較されます。選択は、プロジェクトの種類、チームのスキル、ターゲットプラットフォームによって異なります。

基準UnityUnreal Engine 5Godot 4
言語C#C++ / BlueprintsGDScript / C#
グラフィックスBuilt-in / URP / HDRPNanite + Lumenカスタムレンダラー
モバイル最適化優れている(モバイルゲームの70%)良好(AAA移植)良好(軽量エンジン)
参入障壁低い高い低い
ライセンスPersonal / Pro / Enterprise5%ロイヤリティ($1Mまで)MIT(無料)

モバイルゲームにおいて、Unityはその柔軟なレンダリングシステム(URP — Universal Render Pipeline)のおかげで業界標準であり続けています。URPは限られた計算能力のモバイルGPU向けにグラフィックスを最適化し、レンダリングパスの数を自動的に削減し、シェーダーをバッチ処理してGPU負荷を低減します。

Unreal Engine 5は最高のグラフィック品質(ジオメトリ用Nanite、照明用Lumen)を提供しますが、より強力なハードウェアとチームの経験が必要です。Godotはオープンソースコードと小さなエンジンサイズで魅力的ですが、既製アセットが少なく、専門家市場も小さくなっています。

非ゲームアプリケーション向けUnity

Unityはゲーム開発以外でも、建築、自動車、小売、教育で積極的に使用されています。リアルタイム3D可視化(RT3D)により、インタラクティブな3Dプレゼンテーション、シミュレーター、プロダクトコンフィギュレーターを作成できます。

自動車産業では、Unityは車のデジタルツインやHMI(ヒューマンマシンインターフェース)システムの作成に使用されています。Mercedes-BenzとBMWは、物理プロトタイプが製造される前に、ダッシュボードディスプレイやマルチメディアシステムのプロトタイピングにUnityを使用しています。

小売では、Unityはプロダクトコンフィギュレーターに適用されています:IKEA(仮想家具配置)、Nike(スニーカーのカスタマイズ)、Audi(車のコンフィギュレーター) — これらすべてのプロジェクトはUnityで構築されています。ユーザーはリアルタイムで色、素材、オプションを変更し、結果を3Dで確認できます。

非ゲームプロジェクト向けに、Unityは専門ツールを提供しています:AR Foundation(ARKitおよびARCore用)、Pixyz Plugin(CADモデルインポート用)、Unity Reflect(Revit BIMモデルとの同期用)。同社は、エンタープライズクライアント向けのクラウドサービスを含むUnity Industryの方向性を積極的に開発しています。

よくある質問

初心者にとってUnityの習得は難しいですか?

Unityは、豊富なドキュメント、無料のUnity Learnコース、巨大なコミュニティのおかげで、初心者にとって最もアクセスしやすいゲームエンジンのひとつと考えられています。開始するには、C#の基礎知識とコンポーネントアーキテクチャの原則を理解すれば十分です。ほとんどの初心者は2〜3ヶ月で最初のゲームを作成します。

Unityで2Dゲームを作成できますか?

はい。Unityには完全な2Dパイプラインがあります:Sprite Renderer、2D Physics(Box2D)、タイルからレベルを作成するTilemap、スプライトのスケルトンアニメーション用の2D Animation。Hollow KnightやCupheadを含む多くの人気2DゲームがUnityで作成されています。2Dツールはプラグインをインストールする必要なくエンジンに組み込まれています。

モバイル開発向けUnityの価格は?

Unity Personalは年収が20万ドルまで無料です。Unity Proは開発者一人あたり年間2,040ドルで、高度なプロファイリングツール、クラウドビルド、優先サポートが含まれます。モバイル開発においては、Personalの機能でほとんどのインディープロジェクトに十分です。

UnityとCocos2dゲームエンジンの違いは?

Cocos2dはC++、Lua、JavaScriptをサポートする2Dフレームワークで、シンプルな2Dゲーム向けです。Unityはエディター、ビジュアルツール、27プラットフォームのサポートを備えた本格的な3D/2Dエンジンです。Cocos2dはアジアでハイパーカジュアルゲームに人気がありますが、Unityはあらゆるジャンルに適したユニバーサルな選択肢です。

UnityはARとVRをサポートしていますか?

はい。UnityはAR Foundation(ARKit + ARCore)、XR Interaction Toolkit、OpenXRを通じてARとVRの組み込みサポートを提供しています。Half-Life: Alyx(テクニカルデモ)やVRChatなどのVRプロジェクトはUnityで作成されました。このエンジンは、Meta Quest、HTC Vive、Valve Index、PlayStation VRなど主要なVRヘッドセットをすべてサポートしています。

まとめ

  • Unity — C#による2D/3Dゲームおよびリアルタイムアプリケーション向けクロスプラットフォームエンジン
  • アーキテクチャはシーン、GameObjects、MonoBehaviourコンポーネント、プレハブに基づく
  • C# — ゲームロジック、コンポーネント、エディター拡張のための唯一の言語
  • モバイル最適化 — iOSおよびAndroid向けIL2CPP、Asset Bundles、URP、Profiler
  • 比較 — Unityがモバイルでリード(48%)、UnrealがAAA、Godotがインディー
  • 非ゲーム用途 — 建築、自動車、小売、インタラクティブ3Dプレゼンテーション
  • 参入障壁 — 低い、無料のUnity Learnコースと巨大なコミュニティ

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください