unity预制体(Prefab)
预制体(Prefab)
unity中的prefab就是类似⼀个配置⽂件,或者说将gameObject序列化了。⽽且这个配置⽂件还可以被继承/变体(Variant),相当于⼀个强⼤的配置⽂件系统
prefab⽀持variant,以及override的操作,还有独⽴的编辑系统。
历史介绍以及源视频
prefab分为prefab instance和prefabAsset,⼤部分操作的是prefabAsset。prefab的⼀次升级是在2018.3这个版本中,在早期的版本中听说不⽀持⼀些嵌套⼦类的修改,因为没有⽤过早期版本,所以就不深究了。我现在⽤的是2019版本了。
如果需要详细的介绍可以看这篇->
正式介绍 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中有专门的编辑模式,如果你需要修改prefabAsset的话,需要在编辑模式中修改,它的修改属性会影响场景中的实例的属性(但是⽆法覆盖已经被修改的属性),但是如果你修改prefabInstance的话,那么只会作⽤那个实例。这些点和ue4也是⾮常相似的。
ue4:
ue4没啥好介绍的,熟悉ue4的⼈⾃然知道,unity上⾯说的,ue4也有。
prefab的overrides单人开发选ue4还是unity
override它针对于属性,它的功能就是覆盖实例化中未被修改的属性。分为主动技能和被动技能。
被动技能: ⾃动的去修改场景中实例化对象的属性。例如你在编辑模式中修改了⼀个mesh的scale,那么场景中所有实例化prefab对应的mesh的scale都会被同步到⼀样的值。不过这个是有个前提的,就是场景中的实例化prefab对应的mesh的scale未被修改过。
主动技能: 就是针对上⾯的前提的,如果你在场景中已经修改了prefab的某个属性,你想同步到prefabAsset中或者恢复某个属性,那么就可以⽤到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: 也是⼀样的,就是继承。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论