プレハブ

コンポーネント、プロパティー、子ゲームオブジェクトを持った一つのゲームオブジェクトを再利用可能なアセット「プレハブ」 (Prefab) として作成し、保存することができる。プレハブをインスタンス化してシーンに配置した場合、元のプレハブアセットに加えた編集は全てのプレハブインスタンスに反映される。プレハブインスタンスの一部の設定を変更したい場合は「オーバーライド」を使用することができる。一連のオーバーライドを継承するプレハブバリアントを作成することができる。

公式サイト:

プレハブ | Unity マニュアル [公式]

使い方

参考:

プレハブを使ってみよう | ゲームの作り方!

Unity 2018.3 以降における Prefab の使い方をちゃんと理解する | LIGHT11

概要

参考:

新しい Prefab システム | kurihara-n の日記

2分で理解!プレハブとは?使い方までご紹介 | Unishar

Unity 2018.3 の Prefab ワークフローの実用について考える | てっくぼっと!

新しい Prefab ワークフローについて考えてみた – Qiita

新しいプレハブワークフローのご紹介 | Unity Technologies Blog

ココが変わる!Unity の新しいエディタワークフロー | Unity Technologies Blog

入門

参考:

2018.3 以降のプレハブの基本操作 | Unity Connect

プレハブモード

ドキュメント:

プレハブモードでのプレハブの編集 | Unity マニュアル [公式]

Nested Prefab

参考:

Nested Prefab を使ってみる – Qiita

展開する (Unpack)

「アンパック」 (Unpack) を実行するとプレハブインスタンスの内容を個別のゲームオブジェクトに展開する。

  • Unpack Prefab入れ子になったプレハブはプレハブの状態を維持したままで、プレハブの1階層目のみ展開される。
  • Unpack Prefab Completely入れ子になったプレハブも全て、それぞれのゲームオブジェクトに展開される。

ドキュメント:

プレハブインスタンスの展開 | Unity マニュアル [公式]

参考:

Hierarchy にある GameObject の Prefab を解除する方法 | はなちるのマイノート

Nested Prefab を使ってみる – Qiita

プレハブバリアント

プレハブバリアントを作成するには、プロジェクトウィンドウのプレハブを右クリックして「Create > Prefab Variant」を実行する。プレハブバリアントにオーバーライドを持たせるためには、該当するプレハブバリアントをプレハブモードで開いて編集を行う。

既存のプレハブインスタンスからプレハブバリアントを作成したい場合は、ヒエラルキーウィンドウのプレハブインスタンスをプロジェクトウィンドウにドラッグし、「Create Prefab」ダイアログで「Prefab Variant」を選択してプレハブバリアントを作成する。

ドキュメント:

プレハブバリアント | Unity 2018.4 マニュアル [公式]

インスタンスオーバーライド

ドキュメント:

インスタンスのオーバーライド | Unity マニュアル [公式]

プレハブを作成する

ドキュメント:

プレハブの作成 | Unity マニュアル [公式]

プレハブを編集する

ドキュメント:

プレハブモードでのプレハブの編集 | Unity マニュアル [公式]

インスタンスを通したプレハブの編集 | Unity マニュアル [公式]

参考:

What is the proper way to edit prefabs – Unity Answers

FBX の扱い

FBX をプレハブとして扱い、プレハブを作成してゲーム内で使用するプレイヤーやシーン内のオブジェクト、アイテムなどとして使用する。FBX 内のオブジェクト名や階層構造を変更すると、それらのオブジェクトに紐づいていたプレハブバリアントを編集して適用したオーバーライドの情報は消えてしまう。

ドキュメント:

Working with Model Prefabs and FBX Prefab Variants | FBX Exporter 5.0 Manual [Official]

参考:

Unity 2018.3 以降で FBX を Prefab 化して正しく取り扱う | LIGHT11

FBX 更新後に Prefab を再作成すべきか? – Qiita

FBX からの Prefab 生成/更新を自動化する | LIGHT11

プレハブで置き換える

プロジェクトウィンドウのプレハブを Alt キーを押しながらドラッグしてヒエラルキーウィンドウのゲームオブジェクトにドロップすれば、対象のゲームオブジェクトをプレハブに置き換えることができる。

参考:

Alt キーを押しながらプレハブをゲームオブジェクトにドラッグすると置き換えることができる | コガネブログ

Replace prefab – Unity Answers

Replace game object with prefab? – Unity Forum

スクリプトで置き換える

参考:

プレハブを一括で差し替える | RogueLive 公式ブログ

Replace GameObjects or Prefabs with another Prefab | Unity3D.College

Replacing all objects in scene with another object – Game Development Stack Exchange

モデルの差し替え

ドキュメント:

メッシュフィルター | Unity マニュアル [公式]

Mesh Renderer | Unity マニュアル [公式]

Skinned Mesh Renderer | Unity マニュアル [公式]

参考:

Prefab のモデルの差し替えを、セットしたコンポーネントを一々付け直さずに行う方法 | テラシュールブログ

キャラクターモデルを差し替える時にコンポーネントの付け替えを自動化したい話 | soy-software

How do i officially replace a FBX file? – Unity Forum

Keep the prefab connection when updating FBX asset – Stack Overflow

Keep the prefab connection with FBX – Game Development Stack Exchange

How do I change the mesh in an existing prefab in Unity? – Game Development Stack Exchange

スクリプトでランタイムにインスタンスを作成する (Instantiate)

ドキュメント:

ランタイムのプレハブのインスタンス化 | Unity マニュアル [公式]

Object.Instantiate | Unity スクリプトリファレンス [公式]

参考:

Prefab を Instantiate して楽にオブジェクトを配置 | エクスプラボ

Prefab を使ったオブジェクト生成/複製/削除等の方法 | XR-Hub

プレハブの作り方とスクリプトからの生成方法 | 電脳産物

Prefab を生成する方法徹底解説 | 渋谷ほととぎす通信

スクリプトから Prefab のインスタンスを作る方法 – Qiita

Prefab と Instantiate の基本 – Qiita

Prefab のポジションを個別に変更する | フタバゼミ

How do I instantiate a prefab through a script correctly? – Stack Overflow

SetParent

ドキュメント:

Transform.SetParent | Unity スクリプトリファレンス [公式]

Transform.parent | Unity スクリプトリファレンス [公式]

参考:

Transform の SetParent で親子関係を設定して表示を整理する | エクスプラボ

Transform.SetParent の第2引数に渡す値によって何が変わるか | コガネブログ

スクリプトで操作する

参考:

スクリプトから Prefab を操作する (Unity 2018.3 以降) | LIGHT11

インスタンスを破壊する (Destroy)

プレハブインスタンスを破壊するには Destroy メソッドを使う。

obj = Instantiate(buildingPrefab);
Destroy(obj);

ドキュメント:

Object.Destroy | Unity スクリプトリファレンス [公式]

ゲームオブジェクトの作成および削除 | Unity 2019.4 マニュアル [公式]

ゲームオブジェクトの作成および削除 - GameObject | Unity マニュアル [公式]

参考:

How to destroy an instantiated prefab in C#? - Unity Answers

Destroy instantiated object instead of prefab - Unity Answers

ガベージコレクション (GC)

参考:

コンポーネントが Destroy されても、オブジェクトが GC で回収されないかもしれない話 - Qiita

Prefab Editing Environments

プレハブ編集の際に使用するシーンを設定する。

  • Regular Environment
  • UI Environment

ドキュメント:

編集環境 | Unity マニュアル [公式]

参考:

Unity 2018.3 からの Prefab ワークフロー | ゴイサギ日記

新たな Prefab ワークフローで Prefab の RootCanvas の RectTransform が崩れる問題の対策 - Qiita

Lightning is super dark when Editing Prefab Asset - Unity Forum

Prefab Utility

ドキュメント:

UnityEditor.PrefabUtility | Unity スクリプトリファレンス [公式]

参考:

スクリプトから Prefab を操作する Unity 2018.3 以降 | LIGHT11

スクリプトから Prefab を操作する Unity 2018.2 まで版 | LIGHT11

インスタンスから元の Prefab を取得する | kan のメモ帳

Prefab の状態を保ったままのオブジェクトをプログラムから作成する | kan のメモ帳

ルートに変更された Prefab があるかどうかを調べるエディター拡張 | GIGA CREATION Blog

ヒエラルキー上で隣に複製 & プレハブを維持して複製 | JoyPlot

再生モード中の変更をスクリプトでプレハブに保存/更新する | いんでぃーづ

How to find the prefab root in the prefab editor with an environment? - Unity Forum

How can I get a GameObject root prefab? - Stack Overflow

Prefab Stage Utility

ドキュメント:

Experimental.SceneManagement.PrefabStageUtility | Unity 2020.3 スクリプトリファレンス [公式]

参考:

Prefab モード中にシーンや Prefab の情報を取得する | LIGHT11

Prefab Mode でスクリプトからオブジェクトを選択状態にする | うにてぃブログ

プレハブモードかどうかをエディタ拡張で確認する方法 | コガネブログ

How to find the prefab root in the prefab editor with an environment? - Unity Forum

Missing Script

コード:

Find Missing Scripts | Unify Community Wiki

参考:

You are trying to replace or create a prefab from the instance 'hoge' that references a missing script. This is not allowed. Please change the script or remove it from the game object. のエラーが出た - Qiita

プレハブが見つからない (Missing)

現象:

ヒエラルキーウィンドウでゲームオブジェクトが赤く表示され、選択するとインスペクターウィンドウで Missing と表示される。

原因:

ゲームオブジェクトの元になったプレハブアセットが削除された、もしくは、GUID が変更された。

対処法:

  • GUID を手動で紐付けし直す
  • 諦めて Unpack Prefab を実行する
  • Fix Prefab
こちらのページを参照

参考:

Missing Prefab を再度紐づける方法 - Qiita

Prefab だったゲームオブジェクトの Missing を解除 | クリエイターとっち日記

Missing Prefab かどうか確認する方法 | コガネブログ

プレハブのプレビューが真っ暗になる

URP 用のシェーダーを使用しているプレハブの場合は、レンダリングパイプラインを URP に切り替えてマテリアルを URP 用に変換すると正常に表示される。

参考:

URP Prefab preview is blank when a Custom Forward Renderer Data and Default Layer Mask is Mixed are used | Unity Issue Tracker

All Asset Previews for Prefabs and Models are fully black - Unity Answers

All prefab previews are completely black - Unity Forum

Prefab preview is dark in the inspector - Unity Answers

Preview Pane Very Dark - Unity Forum

Why are my prefab and model previews not showing? - Unity Forum

まとめ

Prefab を使ったオブジェクト生成/複製/削除等の方法 | XR-Hub

Tips

Improved Prefabs Introduction & FAQ | Unity Forum [Official]

Revert Same Value Override Property

参考:

Prefab の同値での上書きを一括リバートするツール作った話 - Qiita

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA