- Unityの使い方を勉強しているときに「Prefab(プレハブ)」って言葉が出てきたけど、いまいちよくわからない
という悩みを解決します。
ひとことでいうと、設計図です。オブジェクトを生成する方法を詳しく書いてある設計図です。
この記事にはPrefabの説明と使い方をお伝えします。じっくり読んでPrefabを理解していただきたいです。
Prefab(プレハブ)とは設計図のこと
設計図といってもなにが書いてある設計図なのかというはなしになりますね。
どのように落ちるのかや色や大きさやコンポーネントの内容などそのオブジェクトの要素を書いた設計図です。
その設計図から作成したオブジェクトをインスタンスといいます。設計図からオブジェクトを生成することができるってことですね。
Prefab(プレハブ)を作ろう
【Hierarchy】→【PrefabにしたいオブジェクトをProjectウィンドウにドラッグ&ドロップ】
これでオブジェクトをPrefab化することができます。実際にやってみましょう。
この記事でのレイアウトは【2 by 3】となっています。Gifや画像が見にくいという方は、レイアウトを変更してください。
元となるオブジェクトを作成する(今回はCube)
【Hierarchy】→【Create】→【3D Object】→【Cube】
まずは元となるオブジェクトを作成していきます。名前はそのままで構いません。
【Cube】の大きさを変更する
【Hierarchy】→【Cube選択】→【Inspector】→【Transformの値を上のようにする】
のちのち変化をわかりやすくするためです。大きさを変更させてください。
オブジェクトをPrefab化する
【Hierarchy】→【PrefabにしたいCubeをProjectウィンドウにドラッグ&ドロップ】
Hierarchy上からPrefab化したいオブジェクトをProjectウィンドウにドラッグ&ドロップすることで、Prefabを作成することができます。
これでCubeのPrefabが完成しました。このPrefabを使うことで、さきほど作ったCubeを作成することができます。
PrefabはProjectウィンドウで黒い背景になっています。Hierarchy上では青くなっています。そこでPrefabか普通の素材なのか判断してください。もっとわかりやすくしたい場合は【CubePrefab】とか【SpherePrefab】とか後ろにPrefabとつけるとわかりやすいです。
今回は名前を変えません。
Prefab(プレハブ)を使って実物(インスタンス)を作る
Prefabはプレハブのままではただの設計図でしかありません。Prefabをもとに実物(インスタンス)を作成していきましょ。
HierarchyウィンドウのCubeを削除
【Hierarchy】→【Cube】→【右クリック】→【Delete】
このようなHierarchyになっていればOK。一度PrefabにしてしまったオブジェクトはHierarchy上から削除しても、Prefabから再び作成することができます。
PrefabにしちゃったらHierarchyウィンドウ上から削除してもいいのです。
Prefab(設計図)からインスタンス(現物)を作る
【Projectウィンドウ】→【CubeのPrefabをSceneビューにドラッグ&ドロップする】
これで設計図をもとに実物(インスタンス)を作成することができます。
Prefab(プレハブ)の使い方・ルール
Prefabはインスタンスを生成できるだけではありません。他にもいろいろな使う方があります。Prefabのルールとともに使い方をお伝えします。
Prefab(設計図)を変更することで実物(インスタンス)も変更が適応される
Prefabを変更することで、Prefabを元にしてつくられたインスタンスも同じように変更されます。
ある1つのインスタンスを変更してもPrefabや他のインスタンスに影響されない
ここではCube(1)変更してます。ただのCubeは全く影響しません。
変化させてしまったインスタンスは【Revert】でPrefabの状態に戻せる
やべっ変化しすぎたという場合は、【Revert】元に戻すことができます。
変化させたインスタンスの状態を【Apply】でPrefabに上書きできる
やっぱこっちのインスタンスをPrefabにしたい、という場合上【Apply】で上書きすることができます。
【Apply】をおすと他のインスタンスにも適応されましたし、Prefabも書き換えられましたね。
インスタンスを選択して【Select】を押すとPrefabが選択される
どのPrefabから作成したインスタンスなのか調べることができます。
ここまでまとめ
- Prefabに変更を加えるとインスタンスすべてに適応
- 【Apply】で変更をPrefab、他のインスタンスに適応
- 【Revert】でPrefabと同じ状態に戻す
- 【Select】でPrefabを選択できる
やっていきば慣れマウス。あとコンポーネントもタグもしっかり反映されマウス。
Prefabと複製(コピー)の違いはここにある
- Prefabに変更を加えるとインスタンスすべてに適応
- 【Apply】で変更をPrefab、他のインスタンスに適応
- 【Revert】でPrefabと同じ状態に戻す
- 【Select】でPrefabを選択できる
単純にPrefabと複製の違いは上の4つがあるかないかです。
複製でオブジェクトを増やしても、【Apply】や【Revert】や【Select】の機能はありません。
1つ1つ機能を加えていくしかないのが普通に複製したものです。そのオブジェクトをたくさん使うなら、Prefabのほうが便利ですわ。
補足:Prefabの解除方法
あくまで補足です。オブジェクトのインスタンスとPrefabとの連結を解除したいときに利用してください。
インスタンスとPrefabの関係を断ち切る感じです。親元を離れて独立というか。悲しくもあり、嬉しくもあるお別れです。
Hierarchy上でインスタンスを選択
【Hierarchy】→【インスタンスを選ぶ(Cube (2))】
【GameObject】→【Break Prefab Instance】
【GameObject】→【Break Prefab Instance】
これで、そのオブジェクト(Cube(2))は独立します。Prefabの項目がまだありますが、Prefabから生成したものではありません。
Hierarchy上の文字が黒くなっているのが目印ですね。
Prefabを使ってオブジェクトを自動生成しよう
このタップしたところにオブジェクトを飛ばす【スクリプト例あり】では、Prefabを使って、タップしたところにオブジェクトを飛ばしています。
Prefabをもっと使ってみたいという方はご覧ください。オブジェクトを自動生成する処理は3Dゲームを使う際に使えると思いますので、やって損はないとみやは思います( ・∇・)
まとめ
- Prefabは色や大きさやコンポーネントの内容などそのオブジェクトの要素を書いた設計図
- Prefabから作成したオブジェクトをインスタンス
- Prefabに変更を加えるとインスタンスすべてに適応
- 【Apply】で変更をPrefab、他のインスタンスに適応
- 【Revert】でPrefabと同じ状態に戻す
- 【Select】でPrefabを選択できる
✔Prefabのはなし
●Prefab(プレハブ)は設計図
●Prefabにはオブジェクトの要素(アタッチされているコンポーネントなど)が書かれている
●Prefabをもとに作成したオブジェクトをインスタンスという#unity3d #ゲーム開発 #アプリ開発
— さぎのみや (@saginomiya8) November 4, 2018
Prefabって便利だねっっっっっっっっっっっっ!
Prefab使ってオブジェクトを生成しています。見てね。
以上UnityのPrefabの説明と使い方でした。
さぎのみや(@saginomiya8)でした。
コメント
コメント一覧 (1件)
[…] 2分で理解!Unity の Prefab (プレハブ) とは?使い方までご紹介 | Unishar […]