プレハブ

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

参考:

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

使い方

参考:

Unity のプレハブを使ってみよう | ゲームの作り方!(dkrevel.com)

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

概要

参考:

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

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

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

Unity の新しい 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入れ子になったプレハブも全て個別のゲームオブジェクトに展開される。

参考:

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

Nested Prefab を使ってみる – Qiita

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

プレハブバリアント

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

既存のプレハブインスタンスからプレハブバリアントを作成する場合は、Hierarchy ウィンドウのプレハブインスタンスを Project ウィンドウにドラッグし、メニューから「」を実行する。

参考:

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

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

参考:

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

プレハブを作成する

参考:

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

プレハブを編集する

参考:

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

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

What is the proper way to edit prefabs – Unity Answers

FBX の扱い

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

参考:

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

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

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

Working with Prefabs | Unity FBX Exporter 2.0 Manual [Official]

プレハブで置き換える

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

参考:

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

モデルの差し替え

参考:

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

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

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

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

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

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)

参考:

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

Prefab と Instantiate の基本 – Qiita

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

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

スクリプトで操作する

参考:

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

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

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

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

参考:

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

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

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

Destroy instantiated object instead of prefab – Unity Answers

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

参考:

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

Prefab Editing Environments

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

  • Regular Environment
  • UI Environment

参考:

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

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

Editing Environment | Unity マニュアル [公式]

Lightning is super dark when Editing Prefab Asset – Unity Forum

PrefabUtility

参考:

スクリプトから Prefab を操作する | LIGHT11

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

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

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

PrefabStageUtility

参考:

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

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

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

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

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

Missing Script

参考:

FindMissingScripts | Unify Community Wiki (wiki.unity3d.com)

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)

現象

Hierarchy ウィンドウでゲームオブジェクトが赤く表示され、選択すると Inspector ウィンドウで Missing と表示される。

原因

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

対処法

  • GUID を手動で紐付けし直す
  • 諦めて Unpack Prefab を実行する
  • FixPrefab

参考:

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

Tips

参考:

Improved Prefabs Introduction & FAQ | Unity Forum [Official]

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

コメントを残す

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