24
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityで一度Prefab化したオブジェクトを元に戻す方法

Last updated at Posted at 2015-12-08

Prefab化してみたはいいけれど..

この組み合わせは将来大量生産するかも?!と安易な気持ちでAssetsにドラッグ&ドロップしてPrefab化してしまったオブジェクト、結局は1つしかインスタンス化しなかったので何か見た目が気持ち悪いなぁ、ということがあります。
そんな時に、Prefab化してしまったオブジェクトをPrefab化する前の状態に戻す方法を見つけたので紹介します。

手順

HierarchyからPrefabのインスタンスを選択した状態で、
メニュー → GameObject → Break Prefab Instance
0
(@tsubaki_t1さん、情報ありがとうございます!)

以上です。


ここから下は、今となっては回りくどいだけの試行錯誤の足跡です。何かの時の参考まで。

CubeをPrefab化して、元に戻すまでの手順を説明します。

まずは最初の状態です。
1

次にCubeを一つ置いてみます。
2

このCubeをPrefab化します。
3

ここから、Prefab化したCubeを元の状態に戻していきます。

おもむろに空のGameObjectを作ります。最終的に消すのでCubeやSphereでも構いません。
4

CubeをGameObjectの子にします。
5

AssetsからCubeのPrefabを削除してしまいます。HierarchyのCubeの文字が赤(朱色)に変わります。
6

そしてGameObjectをPrefab化します。なぜか必要なのです。
7

何とここでAssetsからGameObjectのPrefabを削除してしまいます。訳がわからないですね。私も分かりません。
8

前の段階でPrefabが削除されたGameObjectを複製します。
9

複製されたGameObject、ここではGameObject (1)という名前、にもCubeがあります。
このCubeをInspectorで確認すると、、、普通に戻ってる!!!
10

あとは、GameObject (1)のCubeを階層の一番上にドラッグ&ドロップしてから、不要になったGameObjectやGameObject (1)を消せば、めでたくPrefab化する前のCubeに元通り。
11

補足

もともと階層化されている複数のGameObjectから成るPrefabであれば、途中のGameObjectを作って階層化してPrefabにして...の処理は省略して、Prefabを削除してから複製すれば複製されたものが通常のオブジェクトに戻ることを確認しています。
最上位に単独で存在するオブジェクトのPrefabの場合、一旦階層化してPrefab化しないと元のオブジェクトには戻せないようです。

もっとスマートなやり方をご存知の方、ぜひご一報ください。

24
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?