unity 预制体(Prefab)

预制体(Prefab)

unity中的prefab就是类似一个配置文件,或者说将gameObject序列化了。而且这个配置文件还可以被继承/变体(Variant),相当于一个强大的配置文件系统

prefab支持variant,以及override的操作,还有独立的编辑系统。

历史介绍以及源视频

prefab分为prefab instance和prefabAsset,大部分操作的是prefabAsset。prefab的一次升级是在2018.3这个版本中,在早期的版本中听说不支持一些嵌套子类的修改,因为没有用过早期版本,所以就不深究了。我现在用的是2019版本了。
如果需要详细的介绍可以看这篇->[官方直播] Unity2018.3全新Prefab预制件系统深入介绍

正式介绍 prefab

在正式介绍之前,先聊一下unity的prefab和ue4中的蓝图。

简单对比unity和ue4

刚学习unity的时候,我看到prefab里面浮出的就是ue4各种自定义的蓝图/userWidget,毕竟自定义的蓝图也是可以被继承的,因为本身就是个类。不过相比较,unity的prefab会相对来说比较方便一些,不管是创建还是一些修改。下面我会举一些例子。

prefab的创建

unity: 在hierarchy中拖动到projectFolder中去创建。
ue4: 在projectFolder中右键创建一个蓝图的

例如在ue4中用一个蓝图去包含经常重复的资源。unity也是一样,但是prefab是不仅仅用于场景搭建,也可以用于ui,而ue4用于ui的话,自然是使用userWidget了,这个其实也prefab也差不多。

prefab的修改

unity:
unity
unity中有专门的编辑模式,如果你需要修改prefabAsset的话,需要在编辑模式中修改,它的修改属性会影响场景中的实例的属性(但是无法覆盖已经被修改的属性),但是如果你修改prefabInstance的话,那么只会作用那个实例。这些点和ue4也是非常相似的。

ue4:
ue4
ue4没啥好介绍的,熟悉ue4的人自然知道,unity上面说的,ue4也有。

prefab的overrides

override它针对于属性,它的功能就是覆盖实例化中未被修改的属性。分为主动技能和被动技能。

被动技能: 自动的去修改场景中实例化对象的属性。例如你在编辑模式中修改了一个mesh的scale,那么场景中所有实例化prefab对应的mesh的scale都会被同步到一样的值。不过这个是有个前提的,就是场景中的实例化prefab对应的mesh的scale未被修改过。
主动技能: 就是针对上面的前提的,如果你在场景中已经修改了prefab的某个属性,你想同步到prefabAsset中或者恢复某个属性,那么就可以用到override功能。
override
按照3,2,1顺序说起

  • 这个就是恢复到默认值,这个默认值并不是就是(1,1,1),它是恢复到上一个的默认值,例如这个场景中的Scale的上一个默认值就是Scale Prefab里你设定,假如你在编辑模式中设置是的(2,2,2),那么你在这里恢复,它就会恢复到(2,2,2),而不是(1,1,1)。
  • 这个就是相当于你在编辑模式里的操作了
    在这里插入图片描述
  • 这个就是说,我在PrefabTransform Prefab的编辑模式中去设置Scale的属性
    在这里插入图片描述
    在ue4中就没有那么多主动技能了,只能恢复属性,而被动技能是一样的(一样也是没有被修改过的属性)。当然你可以直接在编辑模式下达到一样的效果,只不过unity是帮你集成了这些功能,更加方便。
    这里我就用UI来举例了,看一下图片就明白。
    在这里插入图片描述

prefab的variant

unity: 这个把它理解成继承就差不多了,父类修改的子类也会跟着变化,当然也是实例化的prefab属性被修改以后也是无法同步的。
ue4: 也是一样的,就是继承。

猜你喜欢

转载自blog.csdn.net/qq448545478/article/details/106970612