Skip to content

Unityのフォルダ構成

Unityのフォルダ構成:大規模プロジェクト向けガイド Unityのフォルダ構成は、小規模な個人開発であれば柔軟に決められますが、大規模なプロジェクトやチーム開発では、一貫したルールと階層構造が不可欠です。適切なフォルダ構成は、アセット管理の効率化、バージョン管理(Gitなど)の健全性維持、そして開発者の生産性向上に直結します。

標準的なプロジェクト構成 Unityで新規プロジェクトを作成すると、以下の主要なフォルダが自動的に生成されます。開発者は主にAssetsフォルダ内を管理します。

Assets/: ゲームで使用するすべてのアセット(モデル、テクスチャ、スクリプトなど)を格納するルートフォルダです。

Packages/: Unityの公式パッケージや、外部のパッケージが格納されます。package.jsonによって管理されるため、開発者が直接編集することは通常ありません。

ProjectSettings/: プロジェクト全体の各種設定ファイルが格納されます。

Library/: アセットのインポート設定やキャッシュデータなど、Unityが内部的に管理するファイルが生成されます。バージョン管理システム(VCS)に含めるべきではありません。

大規模プロジェクト向け Assets フォルダ構成 大規模プロジェクトでは、アセットの種類だけでなく、機能やチーム、またはゲームのエリアごとにフォルダを分割するのが一般的です。これにより、各開発者が担当する領域に集中しやすくなります。

Assets/ ├── _Project/ │ ├── Common/ # 共通アセット(汎用的なUIなど) │ ├── Configs/ # 設定ファイル(ScriptableObjectなど) │ └── Editor/ # エディタ拡張用スクリプト │ ├── GameFeatures/ # ゲームの主要機能ごとのフォルダ │ ├── Player/ # プレイヤーキャラクター関連 │ │ ├── Animations/ │ │ ├── Models/ │ │ └── Scripts/ │ ├── UI/ # UI関連 │ │ ├── Prefabs/ │ │ ├── Scripts/ │ │ └── Sprites/ │ └── VFX/ # 視覚効果関連 │ ├── Scenes/ # ゲームの各シーン │ ├── 01_TitleScreen/ │ ├── 02_MainMenu/ │ └── 03_GameLevel/ │ ├── Scripts/ # 汎用的なスクリプトやライブラリ │ ├── Utils/ │ └── Common/ │ ├── ThirdParty/ # Asset Storeなど外部からインポートしたアセット │ └── PostProcessing/ │ └── …その他のアセットタイプ フォルダ構成のポイント ルート階層の整理: 最上位の階層をシンプルに保ちます。_Projectのようにアンダースコアを付けることで、リストの先頭に表示させ、重要なフォルダを際立たせることができます。

機能・チーム別の分割: 大規模なプロジェクトでは、アセットの種類(Textures/、Audio/など)で単純に分けるのではなく、**「機能」(Player、UIなど)や「担当チーム」**で分割すると、責任範囲が明確になります。

プレハブの管理: 再利用性の高いゲームオブジェクトは、機能フォルダ内のPrefabsに配置します。これにより、誰でも簡単にそのオブジェクトを見つけて利用できます。

階層の深さ: フォルダの階層は深くしすぎないよう注意します。あまりに深い階層は、ナビゲーションを複雑にし、開発効率を低下させる原因となります。

このフォルダ構成は一例ですが、プロジェクトの特性に合わせてカスタマイズすることで、大規模な開発を効率的かつ秩序だって進めることができます。チーム内で事前にルールを共有し、一貫性を保つことが成功の鍵となります。

上級者向け補足と実践的なアドバイス 📝

  1. ネーミングコンベンションの徹底 フォルダ構成だけでなく、ファイル名やスクリプト名にも厳格なネーミングコンベンションを適用しましょう。

プレフィックス/サフィックスの活用: Tex_ (テクスチャ), Mat_ (マテリアル), Ani_ (アニメーション), SC_ (スクリプト) といった接頭辞を付けることで、アセットの種類が一目でわかります。

一貫した命名規則: Player_Attack_Anim, UI_MainMenu_Canvas のように、[オブジェクト名][機能][種類]といった一貫したルールを設けると、検索性が向上します。

  1. バージョン管理システム(VCS)との連携 大規模プロジェクトでは、GitなどのVCSが必須です。Unity特有の注意点を知っておきましょう。

.gitignoreの設定: Library, Temp, ObjなどのUnityが自動生成するキャッシュフォルダは、VCSの対象から除外します。これらは各開発者のローカル環境で再生成されるため、共有する必要はありません。

バイナリファイルの管理: .unityシーンファイルや.prefabファイルはバイナリ形式のため、差分管理が困難です。Git LFS (Large File Storage) を活用することで、大容量アセットのバージョン管理を効率化できます。

  1. スクリプタブル・オブジェクト(ScriptableObject)の活用 Configsフォルダの役割をさらに明確にしましょう。

ScriptableObject は、ゲーム設定やデータ(キャラクターのステータス、アイテムリストなど)をアセットとして管理できるUnityの強力な機能です。

ハードコードされた値を避け、データをアセットとして外部化することで、プログラマー以外でもゲームバランスの調整が可能になり、大規模開発での役割分担がスムーズになります。

  1. Editorフォルダと開発ツールの管理 _Project/Editorフォルダは、Unityエディターを拡張するための特別なフォルダです。

カスタムウィンドウ: 複雑な作業を効率化するための専用ウィンドウを作成できます。

インポーター: 独自のファイル形式をUnityに自動でインポートするツールを実装できます。

自動化スクリプト: ビルド前の設定確認や、アセットの最適化を自動で行うスクリプトを格納できます。これにより、開発ミスを減らし、品質を安定させられます。