概要
Unityでゲーム開発を進めていくと、スクリプト、3Dモデル、テクスチャ、マテリアル、Prefabなど、様々な種類のアセット(ファイル)がどんどん増えていきます。プロジェクトが大きくなるにつれて、これらのアセットを整理せずに放置しておくと、どこに何があるのか分からなくなり、開発効率が著しく低下してしまいます。
この記事では、Unityプロジェクトを整理整頓するための基本となる「シーン」の概念と、アセットを管理しやすくするための「フォルダ構成」のベストプラクティスについて解説 します。良い整理術は、個人の開発効率を上げるだけでなく、チーム開発を円滑に進める上でも不可欠なスキルです。
シーン (Scene) とは?
Unityにおけるシーンとは、ゲームの「場面」や「レベル」を構成する単位です。例えば、以下のようなものがそれぞれ一つのシーンとして作成されます。
- タイトル画面
- ゲームのステージ1
- ゲームのステージ2
- ゲームオーバー画面
- 設定画面
各シーンファイル(.unityという拡張子)には、その場面に配置されるゲームオブジェクト、ライト、カメラ、UIなどの階層構造や、各コンポーネントの設定値がすべて保存されています。プレイヤーがステージをクリアしたら、現在のシーンから次のステージのシーンへと切り替える、といった処理を実装することで、ゲームが進行していきます。
シーンの作成と管理
- 作成: Projectウィンドウで右クリックし、
Create > Sceneで新しいシーンを作成できます。 - 保存: 現在開いているシーンへの変更を保存するには、
File > SaveまたはCtrl + Sを押します。 - 切り替え: Projectウィンドウのシーンファイルをダブルクリックすることで、編集するシーンを切り替えられます。
ゲーム実行中にシーンを切り替えるには、SceneManagerクラスを使用します。これについては別の記 事で詳しく解説します。
プロジェクトのフォルダ構成
プロジェクトのルート(Assetsフォルダ直下)にすべてのアセットを置くのは最も悪い習慣です。アセットの種類ごとにフォルダを分けて整理することで、目的のファイルを素早く見つけられるようになります。これは世界中の多くのUnity開発者が採用している、事実上の標準(デファクトスタンダード)と言えるプラクティスです。
基本的なフォルダ構成例
以下は、一般的で分かりやすい基本的なフォルダ構成の一例です。
Assets
├── Scenes # シーンファイル (.unity)
├── Scripts # C#スクリプト (.cs)
├── Materials # マテリアル (.mat)
├── Prefabs # Prefab (.prefab)
├── Textures # テクスチャ画像 (PNG, JPGなど)
├── Models # 3Dモデル (FBX, OBJなど)
├── Audio # 音声ファイル (WAV, MP3など)
│ ├── BGM # BGM用の音声
│ └── SFX # 効果音用の音声
└── Shaders # カスタムシェーダー (.shader)
なぜこの構成が良いのか?
- 直感的で分かりやすい: フォルダ名がアセットの種類と一致しているため、誰が見てもどこに何があるか一目で分かります。
- 検索性が高い: 「あのスクリプトを修正したい」と思ったら
Scriptsフォルダを、「このマテリアルの色を変えたい」と思ったらMaterialsフォルダを探せばよいため、 探す手間が省けます。 - チーム開発に強い: チームメンバー全員が同じルールでフォルダを管理することで、他の人が作った機能のファイルも簡単に見つけられ、共同作業がスムーズになります。
機能ごとのフォルダ構成(中〜大規模プロジェクト向け)
プロジェクトがさらに大規模になると、アセットの種類別だけでは管理が難しくなってくることがあります。例えば、Scriptsフォルダに数百ものスクリプトが平坦に並んでいると、関連するスクリプトを探すのが大変です。
その場合、アセットの種類で分けたフォルダの中に、さらに機能ごとのサブフォルダを作成するアプローチが有効です。
Assets
└── Features
├── Player
│ ├── Scripts
│ ├── Prefabs
│ └── Materials
├── Enemy
│ ├── Scripts
│ ├── Prefabs
│ └── Models
└── TitleScreen
├── Scripts
├── Scenes
└── Textures
この方法では、「プレイヤーに関連するものはすべてFeatures/Playerフォルダにまとめる」というルールになります。これにより、関連するアセットが近くに配置されるため、特定の機能を修正・追加する際に非常に効率的です。
どちらの構成が良いかはプロジェクトの規模やチームの文化によりますが、まずは基本的なアセット種類別の構成から始めるのが良いでしょう。
注意点とベストプラクティス
- 最初から整理する癖をつける: 「後で整理しよう」は禁物です。アセットをインポートしたり作成したりしたその瞬間に、正し いフォルダに移動させる習慣をつけましょう。
- 分かりやすい命名規則: フォルダ名やファイル名も重要です。例えば、プレイヤー関連のスクリプトなら
PlayerController,PlayerHealthのように、接頭辞を揃えるなどのルールを決めると、さらに見通しが良くなります。 _(アンダースコア)の活用:_ThirdPartyや_Sandboxのように、フォルダ名の先頭にアンダースコアを付けると、アルファベット順で一番上に表示されるため、外部からインポートしたアセットや、一時的な実験用のフォルダを区別するのに便利です。
まとめ
適切なプロジェクト管理は、クリーンで効率的な開発の土台です。特にシーンとフォルダ構成は、その第一歩となります。
- シーン: ゲームの「場面」や「レベル」を管理する単位。
- フォルダ構成: アセットを種類別にフォルダ分けして整理するのが基本。
- 習慣化: プロジェクトの初期段階から整理整頓を心掛けることが、将来の自分やチームを助けることに繋がります。
綺麗なプロジェクトは、バグの発見を容易にし、新しい機能の追加を加速させます。今日からあなたも「整理整頓マスター」を目指しましょう。