20
21

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.

Prefabを改めて再考してみる

Posted at

 Unityをしばらく使ってきたが、基本中の基本であるPrefabについて、よくわかったいなかったので再考してみました。

#Prefabかどうか
HierarchyのGameObject名が青色なものはPrefabとなります.
下図でいうと下のCubeがそれになります.
is_prefab_hierachy.PNG

ちょっと色がわかりにくい場合はHierarchyからGameObjectを選択して、Inspectorに下記があればPrefabとなります.
is_prefab_inspector.PNG

#作成
 HierarchyにあるGameObjectをProjectにD&DするとPrefabが作成されます.
HierarchyにあるGameObjectはPrefabのインスタンスとなります.
ProjectにあるものはPrefabの本体となります.
インスタンスは本体の複製のようなものであり、一つの本体に対し複数のインスタンスをつくることができます.
以降、インスタンスと本体と明確に切り分けて説明します.

#本体の編集
 本体をProjectで選択して、Inspectorを編集すると全てのインスタンスが本体で編集した内容になります. 下図は同じ本体のPrefabで作られたインスタンスです
main_edit.PNG
Inspectorは下記. ここのCubeのMeshを変更してみます.
main_edit_inspector.PNG
変わりました.
main_edit2.PNG

#インスタンスの編集による影響
今度はインスタンスを編集してみます。3つcubeの下に編集用インスタンスを用意しました.
こいつだけHierarchyから編集してみます. meshを変更します.
instance_edit.PNG
編集してみました.
inspector_edit2.PNG
ここで再度、本体をProjectで選択して、Inspectorを編集するとどうなるでしょうか?
meshをsphereにする変更です.
先ほどだと、全てのインスタンスが本体で編集した内容になりました.
inspector_edit3.PNG
なんと、インスタンスを編集したやつは反映されないのです.

#インスタンスの編集による影響2
改めて本体をProjectで選択して、Inspectorを編集します.
今度はMaterialです.
instace_edit_2.PNG
この場合は、全てのインスタンスが本体で編集した内容になりました.

インスタンスの編集で変えたもの(Component単位?)は、本体の変更を無視するようです.

#Select、Revert、Apply
HierarchyからGameObjectを選択すると、Inspectorに下記の3ボタンが表示されます.
is_prefab_inspector.PNG
###Select
Projectに飛んで本体を選択したような状態になります.
###Revert
インスタンスで編集した内容を全てリセットして本体を同じにします.
###Apply
インスタンスで編集した内容を本体に反映させます.

20
21
0

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
20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?