Unityのプレハブ(Prefab)とは?初心者でもわかる使い方と作り方 | Unity入門の森 ゲームの作り方

Unityのプレハブ(Prefab)とは?初心者でもわかる使い方と作り方

Unity初心者向け入門講座 Unityの使い方・基本操作・ミニゲームの作り方

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

「プレハブって何?」
「複製ってどういうこと?」
「なんか青くなったけど、なぜ?」

Unityを触り始めたばかりのころ、こんなギモンで止まってしまうことはよくあります。

結局プレハブ(Prefabs)は何ができるのか・・・とお考えのあなたに、この記事では、プレハブを「5分で理解して、実際に1回作れる」ところまでを目指します。

むずかしい説明は後回しにして、まずは手を動かしてみましょう!

  • 使用バージョン:Unity 6.3 LTS(6000.3.11f1)
  • 使用テンプレート:Universal 3D

まだUnityをインストールしていない方はこちらをご覧ください。

【ゲームの作り方講座プレゼント中!】

  1. プレハブとは?まず「たとえ」で理解しよう
    1. スタンプで考えてみよう
    2. HierarchyとProjectの違い
  2. Unityのプレハブ化のやり方・作り方|まずは作ってみよう!
    1. 事前準備:Unityプロジェクトを新規作成する
      1. Unity Hubを起動する
    2. テンプレート・プロジェクト名・保存場所を選ぶ
    3. Unityエディターが起動するまで待つ
    4. ステップ1:HierarchyにCubeを作る
    5. ステップ2:ProjectウィンドウにドラッグしてProjectに保存する
  3. インスタンス(複製)を作ってみよう
    1. 重なりを防ぐためにCubeを横に並べよう
  4. プレハブの更新・オーバーライドを使いこなそう|「一括変更」を体感しよう
    1. 準備:Materialを作る
    2. RedMaterialを赤色に設定する
    3. プレハブ編集モードに入ってMaterialを適用する
    4. プレハブ編集モードを終了する
    5. インスタンスだけを個別に変更することもできる
      1. ①BlueMaterialを作って青色に設定する
      2. ②Cube (1)だけにBlueMaterialを適用する
  5. プレハブ化できない・解除・展開のトラブル解決集
    1. プレハブ化できない・青くならないときの対処法
    2. HierarchyとProjectのどちらにプレハブがある?
    3. プレハブのオーバーライド・Apply / Revert って何?
    4. 個別変更したのにプレハブが全部変わってしまった
    5. プレハブを解除・展開するには
    6. プレハブを更新する方法
  6. プレハブを使う理由・メリットまとめ
    1. プレハブなしで敵を100体つくったら…
  7. プレハブ生成スクリプトの書き方・呼び出し方【サンプルコード付き】
    1. ステップ1:C#スクリプトを作る
    2. ステップ2:コードを書く
    3. コードの意味をひとつずつ確認しよう
    4. ステップ3:スクリプトをGameObjectにアタッチする
    5. ステップ4:InspectorにCube.prefabをセットする
    6. ステップ5:実際に動かしてみよう!
    7. 動かない場合のチェックリスト
  8. (補足)プレハブバリアントとは?
  9. まとめ

プレハブとは?まず「たとえ」で理解しよう

プレハブとは、「オブジェクトのコピー元となるデータ(テンプレート)」のことです。

ひとことで言うと、「スタンプの版(はん)」みたいなものです。

スタンプで考えてみよう

スタンプを押すとき、「版(はん)」が手元にありますよね。

その版を押すたびに、同じマークがどんどん増やせます。

Unityのプレハブも、同じ考え方です。

  • プレハブ=スタンプの版(コピー元のデータ)
  • インスタンス=スタンプを押してできた印(ゲーム内に置かれたコピー)

「インスタンス」というのは、プレハブをゲーム画面に置いたときにできる「コピー品」のことです。

同じプレハブから何個でも複製(コピー)できます。

HierarchyとProjectの違い

Unityの画面には「Hierarchy(ヒエラルキー)」と「Project(プロジェクト)」があります。

ここを混同してしまう人がとても多いので、先に整理しておきましょう。

  • Hierarchy(ヒエラルキー)=今のゲーム画面に「実際に置いてあるもの」の一覧
  • Project(プロジェクト)=素材やデータを保存しておく「ファイル棚」

プレハブはProjectに保存されているデータです。

それをHierarchyやSceneにドラッグすると「インスタンス(コピー品)」が生まれます。

Unityのプレハブ化のやり方・作り方|まずは作ってみよう!

説明はここまでにして、さっそく手を動かしてみましょう。

プレハブを1回作れたら、もう理解の8割は完了です。

事前準備:Unityプロジェクトを新規作成する

まだプロジェクトを作っていない方は、ここから始めましょう。

すでにプロジェクトがある方はステップ1に進んでください。

Unity Hubを起動する

Unityのプロジェクト管理ツール「Unity Hub」を開きます。

  1. デスクトップまたはスタートメニューからUnity Hubを起動する
  2. 左メニューの「Projects(プロジェクト)」をクリック
  3. 右上の「New project(新規プロジェクト)」ボタンをクリック

テンプレート・プロジェクト名・保存場所を選ぶ

プロジェクト作成画面が開きます。ここで「どんな種類のゲームを作るか」のテンプレートを選びます。

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

Universal 3Dを選ぶ理由
「Universal 3D」はUniversal Render Pipeline(URP)という描画システムを使ったテンプレートです。Unity 6では標準的なテンプレートで、軽量かつ高品質な見た目でゲームを作れます。この記事のコードはUniversal 3D前提で書かれています。
プロジェクト名のポイント

  • スペースや日本語は避ける(エラーの原因になることがある)
  • 半角英数字とアンダーバー(_)だけで付けるのが安全

Unityエディターが起動するまで待つ

「Create project」を押すと、Unityエディターが自動で起動します。

初回は数分かかることがあります。画面が真っ暗なまましばらく動かないこともありますが、止まっているわけではないので待ちましょう。

エディターが開いたら準備完了です。ここからステップ1に進みましょう!

画面の見方がわからない方はこちら
HierarchyやInspectorなど、各ウィンドウの役割がわからない方は先に読んでおくとスムーズです。

ステップ1:HierarchyにCubeを作る

  1. Hierarchyウィンドウで右クリック
  2. 「3D Object」→「Cube」を選択

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

ステップ2:ProjectウィンドウにドラッグしてProjectに保存する

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

 

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

「青くなった!」これがプレハブ化された合図です。

  • 白い名前=普通のオブジェクト(プレハブではない)
  • 青い名前=プレハブのインスタンス(プレハブと連動している)

これでプレハブの作成は完了です。思ったより簡単でしたよね!

インスタンス(複製)を作ってみよう

プレハブができたら、次はコピーを量産してみましょう。

ProjectウィンドウのCubeを、Hierarchyへドラッグ&ドロップするだけで複製できます。

  1. ProjectウィンドウのAssets直下にある「Cube」を、Hierarchyにドラッグ&ドロップする
  2. これを5回くり返してCubeを合計6体にする
  3. Hierarchyに「Cube」「Cube (1)」「Cube (2)」…と増えていく

これらひとつひとつが「インスタンス」です。

HierarchyにCubeが合計6つできたらOKです。

 

重なりを防ぐためにCubeを横に並べよう

このままだと全員が座標(0,0,0)に重なって1つにしか見えません。

それぞれのCubeのPositionを変えて横に並べましょう。

また「ステップ1:HierarchyにCubeを作る」で作成したCubeの座標もついでに(0,0,0)にしておきましょう。(横並びで見やすくするため)

  1. HierarchyのCubeをクリックして選択する
  2. InspectorのTransformの「Position」のXを「0」Yを「0」Zを「0」に変更する
  3. HierarchyのCube (1)をクリックして選択する
  4. InspectorのTransformの「Position」のXを「2」に変更する
  5. 同じように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つ作ります。

  1. Projectウィンドウの何もない場所で右クリック
  2. 「Create」→「Material」を選択
  3. 作成された「New Material」を選択、F2を押してファイル名を「RedMaterial」にして決定(Enterキー)
  4. ProjectウィンドウにRedMaterialが追加される

 

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

RedMaterialを赤色に設定する

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

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

プレハブ編集モードに入ってMaterialを適用する

次に、プレハブ本体を編集します。

プレハブを編集するときは「プレハブ編集モード」という専用の画面に入ります。

  1. ProjectウィンドウのCube.prefabをダブルクリックする
  2. Sceneビュー上部のパンくずリストが「Scenes | Cube」という表示に変わる(これがプレハブ編集モードに入った合図)
  3. ProjectウィンドウのRedMaterialを、SceneビューのCubeへドラッグ&ドロップする
  4. SceneビューのCubeが赤くなることを確認

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

プレハブ編集モードを終了する

  1. Hierarchyウィンドウの一番上を見ると「」という矢印ボタンがある
  2. その「」をクリックして通常モードに戻る

Sceneビューを見ると、さっき複製したすべてのCubeが赤くなっています。

プレハブ本体を1回変更しただけで、Scene上の全インスタンスに反映されました。

これが「一括変更」の力です!

プレハブを使わずに100体配置していたら、1体ずつ手作業で変更しなければなりません。

プレハブなら元を1回変えるだけで全員に反映されます。

インスタンスだけを個別に変更することもできる

「全体は赤のままで、この1体だけ青にしたい」という場面もあります。

やり方は次のとおりです。

①BlueMaterialを作って青色に設定する

  1. Projectウィンドウの何もない場所で右クリック→「Create」→「Material」を選択する
  2. ファイル名を「BlueMaterial」にしてEnterキーで確定する
  3. ProjectウィンドウのBlueMaterialを1回クリックして選択する
  4. InspectorのBase Mapの白い四角をクリックして青色を選んで閉じる

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

②Cube (1)だけにBlueMaterialを適用する

  1. HierarchyのCube (1)をクリックして選択する
  2. InspectorをスクロールしてMesh RendererのMaterials欄を見つける
  3. 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(オーバーライド)から更新できます。

  1. HierarchyのインスタンスをクリックしてInspectorを開く
  2. InspectorのPrefab欄の下にある「Overrides」をクリックする
  3. Apply All」を押すとプレハブ本体に変更が反映される

Apply Allを押すと全インスタンスに変更が広がるので、1体だけ変えたい場合は押さずにそのままにしておきましょう。

プレハブを使う理由・メリットまとめ

ここで改めて「なぜプレハブを使うのか」を整理します。

プレハブなしで敵を100体つくったら…

「敵キャラを100体ばらまくゲームを作ろう!」となったとします。

プレハブなしで100体配置した後、「やっぱり敵の色を変えたい」となったら…

100体をひとつずつ手作業で変更しなければなりません。

これは地獄です。

でもプレハブ1つを変更するだけで100体すべてに反映されます。

  • 量産できる:ドラッグするだけで何個でも複製
  • 一括変更できる:元を変えれば全インスタンスに反映
  • スクリプトから生成できる:ゲーム中に動的にオブジェクトを出現させられる
  • 作業効率が大幅UP:大規模なゲームでも管理しやすい

プレハブ生成スクリプトの書き方・呼び出し方【サンプルコード付き】

ここまでは手でドラッグしてCubeを複製してきました。

でも実際のゲームでは、「クリックしたら敵が出現する」「一定時間ごとにアイテムが降ってくる」のように、プログラムからプレハブを自動生成することがほとんどです。

先ほど作ったCube.prefabを使って、「クリックするたびにCubeが生まれる」コードを試してみましょう。

ステップ1:C#スクリプトを作る

  1. ProjectウィンドウのAssetsの中の何もない場所で右クリックする
  2. 「Create」→「Scripting」→「MonoBehaviour Script」を選択する
  3. ファイル名を「PrefabSpawner」にしてEnterキーで確定する(名前はあとで変えると動かなくなるので注意!

 

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

ステップ2:コードを書く

  1. ProjectウィンドウのPrefabSpawner.csをダブルクリックする
  2. Visual Studio(ビジュアルスタジオ)というコードエディターが自動で開く
  3. 最初から書いてあるコードを全部選択(Ctrl+A)して削除する
  4. 以下のコードをコピペする
  5. Ctrl+Sで保存してからUnityに戻る

 

コードを貼ったら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では「このオブジェクトにこの機能を持たせる」ためにスクリプトをアタッチします。アタッチしないと、スクリプトを作っても何も起きません。

まず、スクリプト専用の「空のオブジェクト」を作ります。

  1. Hierarchyウィンドウで右クリックする
  2. Create Empty(クリエイトエンプティ)」を選択する
  3. Hierarchyに「GameObject」という名前の空のオブジェクトが作られる

次に、スクリプトをGameObjectにアタッチします。

  1. HierarchyのGameObjectをクリックして選択する(Inspectorが空の状態になる)
  2. ProjectウィンドウのPrefabSpawnerを、Inspectorウィンドウにドラッグ&ドロップする

 

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

 

ステップ4:InspectorにCube.prefabをセットする

コードの「①」で作ったprefab変数に、実際のCube.prefabを登録します。

  1. HierarchyのGameObject内にある「PrefabSpawner」をクリックして選択する
  2. InspectorのPrefab Spawner (Script)の中に「Prefab」という欄がある(「None (Game Object)」と表示されている)
  3. ProjectウィンドウのAssets直下の「Cube」をその欄にドラッグ&ドロップ

 

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

ステップ5:実際に動かしてみよう!

  1. Ctrl+Sでシーンを保存する(忘れずに!)
  2. 上の▶ Playボタンを押してゲームを開始する
  3. Gameビューの黒い画面の中をマウスでクリックする(ここをクリックしないとマウス操作が効かない!)
  4. クリックするたびに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学習をどんどん加速させていきましょう!

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました