ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

20220329162023

Unity入門 - Prefab(プレハブ)とは、使い方 -

初めに

 Prefab(プレハブ)とは、どういったものか、Prefabの使い方についてまとめてます。

f:id:fineworks_fine:20220326104256p:plain

Prefabとは

 公式の説明を引用すると、Prefabとは "テンプレートの役割" を持つものです。設計図と紹介されることもあります。Prefabを使うことで、簡単にオブジェクトを複製したり、多くのオブジェクトの設定を変更したりすることができます。

docs.unity3d.com

Prefabを作ってみよう

 今回は、CubeをPrefab化してみます。

  • Prefab化したいオブジェクトをAssetsにドラッグ&ドロップする。

f:id:fineworks_fine:20220326094943p:plain

 これで、CubeをPrefab化できました。
f:id:fineworks_fine:20220326095402p:plain

Prefabを使ってオブジェクトを複製しよう

 Prefab(設計図)をもとに複製されたオブジェクトをインスタンス(実物)といいます。さきほどPrefab化したCubeのインスタンスを作ってみます。

  • PrefabをHierarckyにドラッグ&ドロップする。

f:id:fineworks_fine:20220326095940p:plain
 Cubeのインスタンスができました。
f:id:fineworks_fine:20220326100417p:plain

Prefabからインスタンスの情報を変更する

 Prehabの情報を変更すると、インスタンスすべてに変更が適応されます。PrefabのScaleを変更してみます。

 分かりやすいように、インスタンスにしたオブジェクトのPositionをずらしています。
f:id:fineworks_fine:20220326100919p:plain

  • Assets内にあるPrefab化したCubeのScaleを変更

f:id:fineworks_fine:20220326100955p:plain
 インスタンスに変更が適応されました。

インスタンスの情報を直接変更する

 インスタンスの情報を直接変更した場合は、他のインスタンスの情報は変更されず、そのインスタンスのみに影響がでます。

f:id:fineworks_fine:20220326101813p:plain

Revert、Apply

f:id:fineworks_fine:20220326102345p:plain
 インスタンス化したオブジェクトのInspectorのOverridesをクリックすると、RevertとApplyができます。

Revert(元に戻す)

 Revertでインスタンスへの変更をPrefabの状態に戻すことができます。

f:id:fineworks_fine:20220326102640p:plain

Apply(適応する、当てはめる)

 Applyでインスタンスへの変更をPrefabに適応し、Prefabを上書きすることができます。

f:id:fineworks_fine:20220326102835p:plain

複製(duplicate)とPrefabの違い

 ゲームオブジェクトは、Win:Ctrl + D / Mac:⌘ + Dで複製(duplicate)ができました。複製とPrefabでインスタンスを作ることの大きな違いは次の2点です。

  • Prefabを変更すると、すべてのインスタンスが変更される
  • Revert、Applyができる

 多くのオブジェクトを扱う場合、繰り返し同じオブジェクトを使う場合はPrefab化することで作業量を減らすことができます。

最後に

 Prefabは分かりづらいことも多いですが、便利ですので使いこなせるようになりましょう。
また、スクリプトから生成、操作する方法もまとめようと思います。