Unity全新Prefab预制件系统详解

时间:2024-04-07 13:09:50

unity2018.3引入了全新的prefab预制件系统,在这里主要是说一下自己的理解。

一、Prefab Mode中编辑预制件

1.预制体是不允许在外部修改

预制体只能在Prefab Mode修改(注意这个修改是指整个预制体的父级关系,包括删除不包括添加)否则会弹出窗口强制要求进入Prefab Mode模式,如下:

Unity全新Prefab预制件系统详解

2.Prefab Mode的场景是可以改变的

Unity全新Prefab预制件系统详解

Prefab Mode的场景可以改变,而且存在两个场景,详细内容如下图:

Unity全新Prefab预制件系统详解

3.预制体修改后的两种保存模式

在Prefab Mode下所做的任何改变都会马上应用到所有Prefab身上,因为Auto Save是默认勾选的,如果希望寄过调整完后手动保存则只需要取消勾选Auto Save即可。

Unity全新Prefab预制件系统详解

4.断开物体与预制体联系的两种方式

以下是断开前和断开后的对比。

断开前:

Unity全新Prefab预制件系统详解

a.断开当前选择层级的预制体关系

       具体操作:

Unity全新Prefab预制件系统详解

       断开后:

Unity全新Prefab预制件系统详解

       这里断开之后Cube就不是预制体了变成了普通物体,但是它下面的子物体仍然是预制体。

b.断开当前选择层级及其子层级的预制体关系

       具体操作:

Unity全新Prefab预制件系统详解

       断开后:

Unity全新Prefab预制件系统详解

       层级下的所有物体都变成了普通物体。

二、Nested Prefabs(嵌套式预制件)

预制体之间可以相互嵌套,且子预制体保持独立不会变成父预制体的一部分,如果预制体是其他预制体的子物体,则包里面会有多个该预制体,例如:A是B的子预制体,A也是C的子预制体,那么最终包里面会有3个A。

三、Prefab Overrides(预制件覆盖/重载)

在两种情况下会产生Override。

1.在非Prefab Mode下对预制体的缩放会产生override,如下:

Unity全新Prefab预制件系统详解

通过右键修改的属性或者直接点击override之后会改变Prefab,如下:

Unity全新Prefab预制件系统详解Unity全新Prefab预制件系统详解

2.在非Prefab Mode下对Prefab内部进行修改会产生Override,如下:

Unity全新Prefab预制件系统详解

这些改变在还没有应用之前都不会改变Prefab,改变的只是当前物体。当右键你修改的属性时会出现多个选择,如下:

Unity全新Prefab预制件系统详解

这个选择是需要你告诉Unity你改变的是哪个预制体,是Cube还是GameObject。

四、Prefab Variants(预制件变体)

将Hierarchy窗口的预制体拖入Project窗口时会弹出一个窗口,如下:

Unity全新Prefab预制件系统详解

预制体变体和预制体的关系就和类中的子类和父类的关系类似,它们的关系如下:

      1.预制体改变之后和它相关的预制件也会相应的改变,但是预制件已经改变的属性不会再变

      2.预制件改变之后预制体并不会发生改变

教程到这里就结束了,不懂的地方可能会有点绕还需要多揣摩揣摩。