現場レベルのゲーム制作が、すべてここで学べます。
「複製ってどういうこと?」
「なんか青くなったけど、なぜ?」
Unityを触り始めたばかりのころ、こんなギモンで止まってしまうことはよくあります。
結局プレハブ(Prefabs)は何ができるのか・・・とお考えのあなたに、この記事では、プレハブを「5分で理解して、実際に1回作れる」ところまでを目指します。
むずかしい説明は後回しにして、まずは手を動かしてみましょう!
- 使用バージョン:Unity 6.3 LTS(6000.3.11f1)
- 使用テンプレート:Universal 3D
まだUnityをインストールしていない方はこちらをご覧ください。
プレハブとは?まず「たとえ」で理解しよう
プレハブとは、「オブジェクトのコピー元となるデータ(テンプレート)」のことです。
ひとことで言うと、「スタンプの版(はん)」みたいなものです。
スタンプで考えてみよう
スタンプを押すとき、「版(はん)」が手元にありますよね。
その版を押すたびに、同じマークがどんどん増やせます。
Unityのプレハブも、同じ考え方です。
- プレハブ=スタンプの版(コピー元のデータ)
- インスタンス=スタンプを押してできた印(ゲーム内に置かれたコピー)
「インスタンス」というのは、プレハブをゲーム画面に置いたときにできる「コピー品」のことです。
同じプレハブから何個でも複製(コピー)できます。
HierarchyとProjectの違い
Unityの画面には「Hierarchy(ヒエラルキー)」と「Project(プロジェクト)」があります。
ここを混同してしまう人がとても多いので、先に整理しておきましょう。
- Hierarchy(ヒエラルキー)=今のゲーム画面に「実際に置いてあるもの」の一覧
- Project(プロジェクト)=素材やデータを保存しておく「ファイル棚」
プレハブはProjectに保存されているデータです。
それをHierarchyやSceneにドラッグすると「インスタンス(コピー品)」が生まれます。
Unityのプレハブ化のやり方・作り方|まずは作ってみよう!
説明はここまでにして、さっそく手を動かしてみましょう。
プレハブを1回作れたら、もう理解の8割は完了です。
事前準備:Unityプロジェクトを新規作成する
まだプロジェクトを作っていない方は、ここから始めましょう。
すでにプロジェクトがある方はステップ1に進んでください。
Unity Hubを起動する
Unityのプロジェクト管理ツール「Unity Hub」を開きます。
- デスクトップまたはスタートメニューからUnity Hubを起動する
- 左メニューの「Projects(プロジェクト)」をクリック
- 右上の「New project(新規プロジェクト)」ボタンをクリック

テンプレート・プロジェクト名・保存場所を選ぶ
プロジェクト作成画面が開きます。ここで「どんな種類のゲームを作るか」のテンプレートを選びます。
- 上部のUnityバージョンが6000.3.XXfX LTSになっていることを確認する(今回は6000.3.11f1 LTSを使用)
- テンプレート一覧から「Universal 3D」を選択する
- 右側の「Project name(プロジェクト名)」欄に名前を入力する(今回はPrefabTestと入力)
- 「Location(保存場所)」が自分のわかりやすい場所になっているか確認する
デフォルトはドキュメントフォルダなのでそのままでもOK - 右下の「Create project(プロジェクトを作成)」ボタンをクリック

「Universal 3D」はUniversal Render Pipeline(URP)という描画システムを使ったテンプレートです。Unity 6では標準的なテンプレートで、軽量かつ高品質な見た目でゲームを作れます。この記事のコードはUniversal 3D前提で書かれています。
- スペースや日本語は避ける(エラーの原因になることがある)
- 半角英数字とアンダーバー(_)だけで付けるのが安全
Unityエディターが起動するまで待つ
「Create project」を押すと、Unityエディターが自動で起動します。
初回は数分かかることがあります。画面が真っ暗なまましばらく動かないこともありますが、止まっているわけではないので待ちましょう。
エディターが開いたら準備完了です。ここからステップ1に進みましょう!
HierarchyやInspectorなど、各ウィンドウの役割がわからない方は先に読んでおくとスムーズです。
ステップ1:HierarchyにCubeを作る
- Hierarchyウィンドウで右クリック
- 「3D Object」→「Cube」を選択

HierarchyにCubeが追加されればOKです。

ステップ2:ProjectウィンドウにドラッグしてProjectに保存する
- HierarchyのCubeをProjectウィンドウのAssetsにドラッグ&ドロップする
- Projectの中に「Cube.prefab」というファイルができる(表示上はCube)

HierarchyのCubeの名前が青色に変わればOKです。

「青くなった!」これがプレハブ化された合図です。
- 白い名前=普通のオブジェクト(プレハブではない)
- 青い名前=プレハブのインスタンス(プレハブと連動している)
これでプレハブの作成は完了です。思ったより簡単でしたよね!
インスタンス(複製)を作ってみよう
プレハブができたら、次はコピーを量産してみましょう。
ProjectウィンドウのCubeを、Hierarchyへドラッグ&ドロップするだけで複製できます。
- ProjectウィンドウのAssets直下にある「Cube」を、Hierarchyにドラッグ&ドロップする
- これを5回くり返してCubeを合計6体にする
- Hierarchyに「Cube」「Cube (1)」「Cube (2)」…と増えていく

これらひとつひとつが「インスタンス」です。
HierarchyにCubeが合計6つできたらOKです。
重なりを防ぐためにCubeを横に並べよう
このままだと全員が座標(0,0,0)に重なって1つにしか見えません。
それぞれのCubeのPositionを変えて横に並べましょう。
また「ステップ1:HierarchyにCubeを作る」で作成したCubeの座標もついでに(0,0,0)にしておきましょう。(横並びで見やすくするため)
- HierarchyのCubeをクリックして選択する
- InspectorのTransformの「Position」のXを「0」Yを「0」Zを「0」に変更する
- HierarchyのCube (1)をクリックして選択する
- InspectorのTransformの「Position」のXを「2」に変更する
- 同じようにCube (2)はX:4、Cube (3)はX:6、Cube (4)はX:8、Cube (5)はX:10に変更する

そのままのシーンだと見えない場合、マウスホイールで視点を調整してみてください。

💡 シーンビューの視点操作
- ズーム:マウスホイールを回転
- 視点回転:Alt + 左クリック+ドラッグ
- 平行移動:中クリック+ドラッグ
Cubeが横一列に並んでいれば準備OKです。

プレハブの更新・オーバーライドを使いこなそう|「一括変更」を体感しよう
ここがプレハブで一番スゴいところ。
プレハブ本体を変更すると、すべてのインスタンスに一括で反映されます。
実際に色を変えて確かめてみましょう。
準備:Materialを作る
Cubeの色を変えるには「Material(マテリアル)」というデータが必要です。
デフォルトのCubeにはMaterialがないので、まず新しく1つ作ります。
- Projectウィンドウの何もない場所で右クリック
- 「Create」→「Material」を選択
- 作成された「New Material」を選択、F2を押してファイル名を「RedMaterial」にして決定(Enterキー)
- ProjectウィンドウにRedMaterialが追加される

ProjectウィンドウのAssetsフォルダにRedMaterialが追加されていたらOKです。

RedMaterialを赤色に設定する
- ProjectウィンドウのAssetsフォルダのRedMaterialを1回クリックして選択する
- 画面右側のInspectorを見ると「Surface Inputs(サーフェスインプット)」という項目がある
- その中の「Base Map(ベースマップ)」の右にある白い四角をクリックする
- カラーピッカー(色を選ぶウィンドウ)が開くので、赤色を選んで閉じる

RedMaterialが赤になったらOKです。

プレハブ編集モードに入ってMaterialを適用する
次に、プレハブ本体を編集します。
プレハブを編集するときは「プレハブ編集モード」という専用の画面に入ります。
- ProjectウィンドウのCube.prefabをダブルクリックする
- Sceneビュー上部のパンくずリストが「Scenes | Cube」という表示に変わる(これがプレハブ編集モードに入った合図)
- ProjectウィンドウのRedMaterialを、SceneビューのCubeへドラッグ&ドロップする
- SceneビューのCubeが赤くなることを確認

プレハブ編集モード中にCubeが赤くなったらOKです。

プレハブ編集モードを終了する
- Hierarchyウィンドウの一番上を見ると「<」という矢印ボタンがある
- その「<」をクリックして通常モードに戻る
Sceneビューを見ると、さっき複製したすべてのCubeが赤くなっています。
プレハブ本体を1回変更しただけで、Scene上の全インスタンスに反映されました。
これが「一括変更」の力です!
プレハブを使わずに100体配置していたら、1体ずつ手作業で変更しなければなりません。
プレハブなら元を1回変えるだけで全員に反映されます。
インスタンスだけを個別に変更することもできる
「全体は赤のままで、この1体だけ青にしたい」という場面もあります。
やり方は次のとおりです。
①BlueMaterialを作って青色に設定する
- Projectウィンドウの何もない場所で右クリック→「Create」→「Material」を選択する
- ファイル名を「BlueMaterial」にしてEnterキーで確定する
- ProjectウィンドウのBlueMaterialを1回クリックして選択する
- InspectorのBase Mapの白い四角をクリックして青色を選んで閉じる

BlueMaterialが青くなったらOKです。

②Cube (1)だけにBlueMaterialを適用する
- HierarchyのCube (1)をクリックして選択する
- InspectorをスクロールしてMesh RendererのMaterials欄を見つける
- ProjectウィンドウのBlueMaterialを、InspectorのMaterials欄の「Element 0」にドラッグ&ドロップする

Cube (1)だけが青くなればOKです。

このとき、InspectorのPrefab欄の下に「Overrides(オーバーライズ)」というボタンが出てきます。
これは「このインスタンスはプレハブ本体と設定が違うよ」というサインです。
- Apply All(アプライオール):個別の変更をプレハブ本体にも反映する(全インスタンスに広がる)
- Revert All(リバートオール):個別の変更を取り消して、プレハブの設定に戻す

「Apply Allは押さない=そのインスタンスだけ変更のまま」と覚えておきましょう。

プレハブ化できない・解除・展開のトラブル解決集
実際にやってみたとき、多くの人が同じ場所で迷います。
重複での説明になる部分もありますが、しっかり覚えておきましょう!
プレハブ化できない・青くならないときの対処法
プレハブ化したオブジェクトは、HierarchyでもProjectのデータと連動しているため名前が青く表示されます。
つまり青い名前=プレハブと連動中、白い名前=ただのオブジェクト(プレハブではない)という意味です。
ドラッグしても青くならない場合は、ProjectウィンドウのAssetsの中にちゃんとドロップできていない可能性があります。もう一度試してみましょう。
HierarchyとProjectのどちらにプレハブがある?
プレハブ本体はProjectに、ゲーム画面に置いたコピー(インスタンス)はHierarchyに存在します。
- Project:プレハブの「素材ファイル」が保存されている場所。ここにあるだけではゲームに出てこない
- Hierarchy:今のシーン(ゲーム画面)に置かれたインスタンスが並ぶ場所。ここにあるものがゲームに表示される
「プレハブ本体はProject、ゲームに出てくるコピーはHierarchy」と覚えておきましょう。
プレハブのオーバーライド・Apply / Revert って何?
インスタンスを個別に変更すると、InspectorのPrefab欄の下に「Overrides(オーバーライズ)」ボタンが出てきます。
これは「このインスタンスはプレハブ本体と設定が違うよ」というサインです。
- Apply All:個別に変更した内容をプレハブ本体にも反映する。押すと全インスタンスに広がる
- Revert All:個別の変更を取り消して、プレハブの設定に戻す
「このインスタンスだけ変えたい」場合はApply Allは押さずにそのままにしておきましょう。
個別変更したのにプレハブが全部変わってしまった
Overridesの「Apply All」を押してしまったことが原因です。
Apply Allはインスタンスへの変更をプレハブ本体に書き戻す操作なので、押した瞬間に全インスタンスへ反映されます。
元に戻したい場合はCtrl+Z(Mac:Command+Z)で取り消しできます。
プレハブを解除・展開するには
プレハブ化したオブジェクトを「ただのオブジェクト」に戻したい場合は、プレハブの解除(展開)を使います。
Hierarchyのプレハブインスタンスを右クリック→「Prefab」→「Unpack」を選択します。

- Unpack:選択したインスタンスだけをプレハブから切り離す
- Unpack Completely:プレハブの中にさらにプレハブが入っている場合も含めて、すべて完全に切り離す
解除後はプレハブとの連動がなくなるため、プレハブ本体を変更しても反映されなくなります。
プレハブを更新する方法
インスタンスに加えた変更をプレハブ本体に反映させたい場合は、Overrides(オーバーライド)から更新できます。
- HierarchyのインスタンスをクリックしてInspectorを開く
- InspectorのPrefab欄の下にある「Overrides」をクリックする
- 「Apply All」を押すとプレハブ本体に変更が反映される
Apply Allを押すと全インスタンスに変更が広がるので、1体だけ変えたい場合は押さずにそのままにしておきましょう。
プレハブを使う理由・メリットまとめ
ここで改めて「なぜプレハブを使うのか」を整理します。
プレハブなしで敵を100体つくったら…
「敵キャラを100体ばらまくゲームを作ろう!」となったとします。
プレハブなしで100体配置した後、「やっぱり敵の色を変えたい」となったら…
100体をひとつずつ手作業で変更しなければなりません。
これは地獄です。
でもプレハブ1つを変更するだけで100体すべてに反映されます。
- 量産できる:ドラッグするだけで何個でも複製
- 一括変更できる:元を変えれば全インスタンスに反映
- スクリプトから生成できる:ゲーム中に動的にオブジェクトを出現させられる
- 作業効率が大幅UP:大規模なゲームでも管理しやすい
プレハブ生成スクリプトの書き方・呼び出し方【サンプルコード付き】
ここまでは手でドラッグしてCubeを複製してきました。
でも実際のゲームでは、「クリックしたら敵が出現する」「一定時間ごとにアイテムが降ってくる」のように、プログラムからプレハブを自動生成することがほとんどです。
先ほど作ったCube.prefabを使って、「クリックするたびにCubeが生まれる」コードを試してみましょう。
ステップ1:C#スクリプトを作る
- ProjectウィンドウのAssetsの中の何もない場所で右クリックする
- 「Create」→「Scripting」→「MonoBehaviour Script」を選択する
- ファイル名を「PrefabSpawner」にしてEnterキーで確定する(名前はあとで変えると動かなくなるので注意!)

ProjectウィンドウにPrefabSpawner.csというファイルが作られたらOKです。

ステップ2:コードを書く
- ProjectウィンドウのPrefabSpawner.csをダブルクリックする
- Visual Studio(ビジュアルスタジオ)というコードエディターが自動で開く
- 最初から書いてあるコードを全部選択(Ctrl+A)して削除する
- 以下のコードをコピペする
- Ctrl+Sで保存してからUnityに戻る
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using UnityEngine; using UnityEngine.InputSystem; public class PrefabSpawner : MonoBehaviour { // ① Inspectorでプレハブをセットするための変数 public GameObject prefab; // 何個生成したか数える変数 int count = 0; void Update() { // ② マウスの左ボタンをクリックしたとき if (Mouse.current.leftButton.wasPressedThisFrame) { // ③ 1個ずつ上に積み重ねてプレハブを生成する Instantiate(prefab, new Vector3(0, count, 0), Quaternion.identity); count++; } } } |

コードを貼ったらCtrl+S(Mac:Command+S)で保存してUnityに戻ったらOKです。

コードの意味をひとつずつ確認しよう
- ① public GameObject prefab:「どのプレハブを使うか」をInspectorから指定できるようにする変数。ここにCubeをセットします
- int count = 0:何個生成したかを数える変数。0から始まって1個生成するごとに増えていく
- ② Mouse.current.leftButton.wasPressedThisFrame:マウスの左ボタンが押された瞬間を検知する(Unity 6のInput System対応)
- ③ Instantiate():プレハブをゲーム内に生成(コピー)する命令。new Vector3(0, count, 0)でY座標をcountの数だけずらすことで1個ずつ上に積み重なる
- count++:生成するたびにcountを1増やす。次のCubeは1つ上に生成される
ステップ3:スクリプトをGameObjectにアタッチする
スクリプトは書いただけでは動きません。GameObjectに「貼り付ける」作業が必要です。
この「貼り付ける」ことをアタッチ(Attach)と呼びます。
Unityでは「このオブジェクトにこの機能を持たせる」ためにスクリプトをアタッチします。アタッチしないと、スクリプトを作っても何も起きません。
まず、スクリプト専用の「空のオブジェクト」を作ります。
- Hierarchyウィンドウで右クリックする
- 「Create Empty(クリエイトエンプティ)」を選択する
- Hierarchyに「GameObject」という名前の空のオブジェクトが作られる

次に、スクリプトをGameObjectにアタッチします。
- HierarchyのGameObjectをクリックして選択する(Inspectorが空の状態になる)
- ProjectウィンドウのPrefabSpawnerを、Inspectorウィンドウにドラッグ&ドロップする

Inspectorに「Prefab Spawner (Script)」という欄が追加されればアタッチ成功です。

ステップ4:InspectorにCube.prefabをセットする
コードの「①」で作ったprefab変数に、実際のCube.prefabを登録します。
- HierarchyのGameObject内にある「PrefabSpawner」をクリックして選択する
- InspectorのPrefab Spawner (Script)の中に「Prefab」という欄がある(「None (Game Object)」と表示されている)
- ProjectウィンドウのAssets直下の「Cube」をその欄にドラッグ&ドロップ

InspectorのPrefab欄が「None」から「Cube」に変わればセット完了です。

ステップ5:実際に動かしてみよう!
- Ctrl+Sでシーンを保存する(忘れずに!)
- 上の▶ Playボタンを押してゲームを開始する
- Gameビューの黒い画面の中をマウスでクリックする(ここをクリックしないとマウス操作が効かない!)
- クリックするたびにCubeが上に積み重なって生成される!

「Clone(クローン)」という名前がついているのが、スクリプトで生成されたインスタンスの証拠です。
これが「動的なインスタンス生成」です。
敵の出現・弾の発射・コインのばらまきなど、ゲーム制作の至るところでこのInstantiateを使います。

動かない場合のチェックリスト
- Gameビューの黒い画面をクリックしてフォーカスをあてているか(これをしないとマウスクリックが効かない)
- InspectorのPrefab欄に「Cube」がセットされているか(Noneのままになっていないか)
- Consoleウィンドウに赤いエラーが出ていないか確認する
- スクリプトのファイル名が「PrefabSpawner」になっているか(大文字・小文字も一致しているか)
(補足)プレハブバリアントとは?
余裕が出てきたら「プレハブバリアント」も知っておくと便利です。
深掘りは別記事で解説しますが、ひとことで言うとこんなイメージです。
- プレハブバリアント=「元のプレハブを引き継ぎつつ、一部だけ変えた派生版」
- 例:赤い敵を元にして「青くて体力が2倍の強い敵」を作る、など
まずは通常のプレハブを使いこなしてから、あとでチャレンジしてみてください。
まとめ
プレハブについて、ポイントをまとめます。
- プレハブ=「コピー元のテンプレートデータ」。Projectに保存される
- インスタンス=「プレハブから複製されたコピー品」。Hierarchyに並ぶ
- HierarchyのオブジェクトをProjectにドラッグするだけでプレハブ化できる
- 複製したCubeはPositionのXをずらして横に並べる(重なり防止)
- プレハブ(元データ)を変更すると全インスタンスに一括反映される
- 個別に変えたいときはApply Allを押さずにそのままにする
- Instantiate()を使えばスクリプトからも動的に生成できる
- スクリプトが動かないときはGameビューをクリックしてフォーカスをあてる
プレハブは最初は「なんか難しそう」と感じる機能ですが、1回作れてしまえばあとは慣れるだけです。
今日の手順を参考に、まずはCube1個でいいので、実際にプレハブを作ってみてください!
「あ、青くなった!」という瞬間が、Unity理解の大きな一歩になります。
次のステップとして、プレハブを使ったシューティングゲームの弾の実装なども挑戦してみましょう。
Unity入門の森では、初心者向けに丁寧な解説動画・講座を多数用意しています。
「次は何を学べばいいかわからない」と感じたら、ぜひ講座をのぞいてみてください。
また、メルマガに登録すると最新のUnity情報や無料講座情報をお届けしています。
ぜひ登録して、Unity学習をどんどん加速させていきましょう!
現場レベルのゲーム制作が、すべてここで学べます。







コメント