Unity3D中的预制体Prefab

1.认识prefab

认识prefab:在U3D里面我们叫它Prefab;我们可以这理解:当制作好了游戏组件(场景中的任意一个gameobject),我们希望将它制作成一个组件模版,用于批量的套用工作,例如说场景中本质上“重复”的东西,“工具”,“建筑”,“植被”这里生成的prefab其实就像是克隆体,但生成的位置和角度以及生成后的一些属性是允许发生变化的。

2.创建prefab

我们只需要把>Hierarchy视图中GameObject拖到已经创建好的Project文件里,蓝色盒子的Prefab资源就出现在Project的视图中了。在这里插入图片描述

3. Prefab实例化

在需要时将预制体从Project视图中直接拖动到Scene或者Hierarchy视图里面使用。在这里插入图片描述

4.进入Prefab模式:

这里有两种方法可以进入Prefab模式:① 在Project视图中双击Prefab② 在Hierarchy视图中点击Prefab实例的箭头按钮 在这里插入图片描述

5.编辑Prefab:

进入Prefab之后可以进行修改,修改完需要点击save进行保存或者打开Auto save自动保存,然后点击箭头退出Prefab,这样就修改好了。添加或者移除组件,会在Inspector界面的名字旁边生成+或者-的标记。如果是增加一个GameObject话,则会在Hierarchy视图中的图标旁边增加+的标记。 在这里插入图片描述
通过实例来编辑Prefab:当选中Prefab实例的根节点时候,Inspector界面中会出现3个按钮,分别是Open、Select和Overrides。
点击Open按钮,将直接进入Prefab模式,
点击Select,将会在Proejct视图中选中Prefab资源。
点击Overrides,则会弹出一个下拉窗Overrides下拉窗口中可以查看所有修改过的数据项(例如属性,组件,添加的GameObjects等)。在这个窗口中,我们可以放弃和应用所有的修改。(需要注意的是,如果这个Prefab是嵌套在其他Prefab中的话,那么Inspector中没有Overrides按钮,因此不能打开Overrides窗口)通过点击下拉界面中列表的数据项,会弹出一个悬浮界面。如果是修改的属性,这个悬浮界面分为两个部分,左边是来自Prefab资源中的值,右边是Prefab实例的值,其中修改过的字段的名字被加粗显示,同时在左边缘有一个蓝色的竖线。另外,所有类型的覆盖值,都可以通过相关上下文菜单来进行应用/撤销。对于修改过的组件(新增加的组件,组件图标旁边有一个+标记),可以通过点击该组件右上角的齿轮按钮,或者右键点击组件顶部弹出上下文菜单来进行操作。已经移除的组件上,会有一个-标记重叠在组件的图标上。删除操作也可以通过是上下文菜单来进行回滚或应用到Prefab资源上。撤销删除的组件,这个组件会从新回到GameObjct中。应用修改的话,会把这个组件也从Prefab中也删除。在这里插入图片描述

6.Prefab嵌套:

Prefab嵌套是指在一个Prefab中,可以包含其他的Prefab,也就是说,一个Prefab可以包含在另外一个Prefab中。添加一个嵌套的Prefab和在场景中添加实例化Prefab的操作是一样的,通过把Prefab资源拖动到Hierarchy视图或者Scene视图中就可以把一个Prefab实例添加到已经打开的Prefab中去。这里可以看到,在Prefab模式下打开的Prefab的GameObejct的图标,显示成的是普通的图标,而嵌套的Prefab的实例则显示着象征了Prefab实例的蓝色图标。同时。我们可以像在普通场景中一样地覆盖这些Prefab实例的值。我们也可在非Prefab模式下来创建Prefab的嵌套。我们只需要把Prefab资源拖动到一个Prefab实例下面,编辑器会在Hierarchy为我们创建一个叠加了+标记的Prefab实例(+标记意味着这个被添加的Prefab实例可以撤销或者应用到外部的Prefab中去)。这里我们和前面介绍的通过实例来编辑Prefab的操作一样,可以把这个修改覆盖值应用到外部的Prefab资源中去。在进行覆盖操作后,+号标记会消失,它将成为外部Prefab的一部分。 在这里插入图片描述

7.Prefab变体:

Prefab变体类似于面向对象编程中的继承的概念。Prefab变体继承了基础Prefab的所有属性,覆盖Prefab变体中的属性,会把属性覆盖到基础Prefab中去。Prefab变体也是一个会带来极大效率提升的新功能Prefab变体可以这样的应用场景下使用: 我们有一个武器的Prefab,为这个武器创建一个变体,通过赋予不同的材质,可以让武器呈现出不同于基础Prefab的外观,例如金属质感,破旧感。对于基础武器Prefab的修改,会影响变体(在变体中覆盖的属性不受影响)。比如我们可以通过调整基础Prefab的碰撞参数来修改各个变体的物理碰撞范围。有两种方法来创建Prefab变体:
①在Project视图中,右键点击Prefab资源,然后选择“Create Prefab Variant”。在这里插入图片描述
②把一个Prefab实例从Hierarchy视图中拖到Project视图中,会弹出一个对话框,让我们选择是创建一个新的Prefab还是创建一个Prefab变体。如果我们选择Prefab变体的话,就会基于拖出的Prefab实例的Prefab资源来创建一个变体,所有在这个实例中的修改,都会存储在Prefab变体内部在这里插入图片描述
Prefab变体显示和Prefab一样的图标,不同的是,图标上有叠加箭头样的装饰图形。在这里插入图片描述

8.编辑Prefab变体:

在Prefab模式下的Prefab变体的的根节点显示着标志着是Prefab实例的蓝色图标,本质上Prefab变体的内核就是一个Prefab实例,任何对这个变体的修改,都可以覆盖到基础Prefab中去。

9.多层级应用覆盖:

当我们修改一个嵌套在内部的Prefab实例时候,在执行Override操作的时候,Unity提供了在应用覆盖的时候可以选择覆盖到不同的Prefab的选项,这就是所谓的多层级应用覆盖。在这里插入图片描述

10.Unpacking Prefab Instance(解除和Prefab的关联):

在新版本中的Prefab中,可以通过Unpack Prefab来解除Prefab实例和Prefab资源之间的连接关系。Prefab实例解除连接后,在Hierarchy视图中的图标显示为普通GameObject的图标。①Unpack Prefab解除当前Prefab实例和Prefab资源的连接关系。这个操作对内部嵌套的Prefab是没有影响的。在这里插入图片描述
②Unpack Prefab Completely完全解除关联和旧版本引擎的“Break Prefab Instance”功能类似,一旦执行了完全解除关联,当前Prefab实例下的所有嵌套Prefab实例也会失去和对应的Prefab资源的关联。 在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扩扩阔阔

整理不易,还请一键三连

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值