「あのスクリプト、どこに置いたっけ……」Assetsフォルダを上から下までスクロールして探し回る時間は、開発で最も無駄な時間のひとつです。プロジェクトが小さいうちは平気でも、アセットが増えるほど散らかりのツケは大きくなっていきます。
この記事では、Unityプロジェクトを整理整頓するための基本となる「シーン」の概念と、アセットを管理しやすくする「フォルダ構成」のベストプラクティスを解説します。良い整理術は、個人の開発効率を上げるだけでなく、チーム開発を円滑に進める上でも不可欠なスキルです。
この記事でわかること
- シーン(ゲームの「場面」の単位)の役割と管理方法
- 定番のフォルダ構成(アセット種類別)とその理由
- 中〜大規模向けの機能別フォルダ構成
- 今日から使える整理のコツ(命名規則・アンダースコア活用)
シーン (Scene) とは?
Unityにおける シーン とは、ゲームの「場面」や「レベル」を構成する単位です。例えば、以下のようなものがそれぞれ一つのシーンとして作成されます。
- タイトル画面
- ゲームのステージ1
- ゲームのステージ2
- ゲームオーバー画面
- 設定画面

各シーンファイル(.unityという拡張子)には、その場面に配置されるゲームオブジェクト、ライト、カメラ、UIなどの階層構造や、各コンポーネントの設定値がすべて保存されています。プレイヤーがステージをクリアしたら、現在のシーンから次のステージのシーンへと切り替える、といった処理を実装することで、ゲームが進行していきます。
シーンの作成と管理
- 作成: Projectウィンドウで右クリックし、
Create > Sceneで新しいシーンを作成できます。 - 保存: 現在開いているシーンへの変更を保存するには、
File > SaveまたはCtrl + Sを押します。 - 切り替え: Projectウィンドウのシーンファイルをダブルクリックすることで、編集するシーンを切り替えられます。
ゲーム実行中にシーンを切り替えるには、SceneManagerクラスを使用します。これについては SceneManagerの記事 で詳しく解説します。
シーンをどう分けるか・シーンに何を置くか
シーンの分け方に絶対の正解はありませんが、目安は2つあります。
- 「画面の切り替わり」で分ける: タイトル → ステージ → リザルトのように、プレイヤーから見て場面が切り替わる単位が、そのままシーンの単位になります。まずはこれで十分です。
- シーンには「配置」だけを置き、中身はPrefabにする: プレイヤー・敵・UIなどの「構造を持つかたまり」は Prefab にして、シーンには「それをどこに置くか」だけを持たせます。シーンファイルが軽く保たれ、同じ部品を別のシーンでも使い回せます。チーム開発では「同じシーンを2人が 同時に編集して衝突する」事故も減ります。
プロジェクトのフォルダ構成
プロジェクトのルート(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フォルダにまとめる」というルールになります。これにより、関連するアセットが近くに配置されるため、特定の機能を修正・追加する際に非常に効率的です。
どちらの構成が良いかはプロジェクトの規模やチームの文化によりますが、使い分けの目安は1行です。 「1人・小規模なら種類別、機能ごとに人や作業が分かれてきたら機能別」。まずは基本的なアセット種類別の構成から始めるのが良いでしょう。
自作アセットは「_Project」フォルダにまとめる
種類別のフォルダを作っても、開発を続けるとほぼ確実に起きるのが 「Asset Storeのアセットを入れたらAssets直下が散らかった」 問題です。インポートしたアセットの多くは、Assets直下に自分の名前のフォルダを勝手に作ります。自作のScriptsやPrefabsが外部アセットのフォルダに埋もれて、どれが自分のファイルか分からなくなるのです。
対策は驚くほどシンプルで、 自作アセットをすべて「_Project」という1つのフォルダの下にまとめる ことです。

Assets
├── _Project # 自作アセットはぜんぶこの下(先頭の_で常に最上部)
│ ├── Scenes
│ ├── Scripts
│ ├── Prefabs
│ ├── Materials
│ └── Audio
├── SomeAssetPack # Asset Storeから入れたアセット(勝手にここへ展開される)
└── TextMesh Pro # パッケージが作るフォルダ
この方式の利点は3つあります。
- 自作と外部の境界が一目瞭然: 「自分が書いた・作ったもの」は
_Projectの下だけ。外部アセットの更新や削除で自作ファイルを巻き込む事故がなくなります - 先頭の
_で常に一番上: どれだけ外部アセットが増えても、自分の作業場所へワンクリックで届きます - 移行やバックアップが簡単: 「このゲームの本体」が1フォルダに収まっているので、持ち出しも整理も楽です
外部アセットがAssets直下に展開されるのは仕様なので、無理に_ThirdPartyへ移動させる必要はありません(アセットによっては内部パスに依存していて、移動すると壊れるものもあります)。 「自分のものを1つにまとめる」だけで、分離は達成できます。
移動・リネームはUnityエディタ内で(.metaとGUID)
フォルダ整理でいちばん危険な操作が、 WindowsのエクスプローラーやMacのFinderでファイルを移動・リネームする ことです。整理した瞬間に、シーンのあちこちが「Missing」だらけになる事故はここから生まれます。
仕組みを知れば怖くありません。Unityは、すべてのアセットに .metaファイル という相棒を自動で作ります。この中には GUID という一意のIDが入っていて、InspectorでのアタッチやPrefabの参照は、ファイル名ではなく このGUIDで つながっています。

- Unityエディタ内(Projectウィンドウ)で移動・リネームする →
.metaも一緒に移動し、GUIDが保たれるので 参照は切れません - エクスプローラーでファイルだけ移動する →
.metaが置き去りになり、Unityが「新しいファイルが来た」と判断して 新しいGUIDを発行 します。古いGUIDへの参照はすべてMissingに
ルールは1つだけ覚えれば十分です。 「アセットの移動・リネームは、必ずUnityのProjectウィンドウの中でやる」。どうしてもOS側で操作したい場合は、.metaファイルを必ずセットで動かしてください。
注意点とベストプラクティス
- 最初から整理する癖をつける: 「後で整理しよう」は禁物です。アセットをインポートしたり作成したりしたその瞬間に、正しいフォルダに移動させる習慣をつけましょう。
- 分かりやすい命名規則: フォルダ名やファイル名も重要です。例えば、プレイヤー関連のスクリプトなら
PlayerController,PlayerHealthのように、接頭辞を揃えるなどのルールを決めると、さらに見通しが良くなります。 _(アンダースコア)の活用:_ThirdPartyや_Sandboxのように、フォルダ名の先頭にアンダースコアを付けると、アルファベット順で一番上に表示されるため、外部からインポートしたアセットや、一時的な実験用のフォルダを区別するのに便利です。
おまけ:先に知っておくと良いこと
プロジェクトの整理ができたら、次はこのあたりの知識が役立ちます。
- シーンを切り替える処理を書きたい: 「スタートボタンでステージ1へ」のようなゲーム実行中のシーン遷移は
SceneManagerクラスで実装します。SceneManagerの記事 で解説しています。 - ファイルだけでなくシーン内のオブジェクトも整理したい: ヒエラルキー上のオブジェクトは タグとレイヤー で分類すると、スクリプトからの検索や当たり判定の制御がしやすくなります。レイヤーとタグの記事 が参考になります。
- さらに本格的なアセット管理: プロジェクトが大規模になると、アセットのロードを動的に管理する Addressables という仕組みが視野に入ります。Addressables入門の記事 で概要を掴めます。
まとめ
適切なプロジェクト管理は、クリーンで効率的な開発の土台です。特にシーンとフォルダ構成は、その第一歩となります。
- シーン: ゲームの「場面」や「レベル」を管理する単位。中身のかたまりはPrefabにして、シーンには「配置」だけを持たせる。
- フォルダ構成: 自作アセットは
_Projectフォルダ1つ にまとめ、その下で種類別(規模が育ったら機能別)に整理する。 - 移動・リネームは必ずUnityエディタ内で: 参照は
.metaのGUIDでつながっている。エクスプローラーで動かすと参照が切れる。 - 習慣化: プロジェクトの初期段階から整理整頓を心掛けることが、将来の自分やチームを助けることに繋がります。
綺麗なプロジェクトは、バグの発見を容易にし、新しい機能の追加を加速させます。今日からあなたも「整理整頓マスター」を目指しましょう。