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中有专门的编辑模式,如果你需要修改prefabAsset的话,需要在编辑模式中修改,它的修改属性会影响场景中的实例的属性(但是无法覆盖已经被修改的属性),但是如果你修改prefabInstance的话,那么只会作用那个实例。这些点和ue4也是非常相似的。
ue4:
ue4没啥好介绍的,熟悉ue4的人自然知道,unity上面说的,ue4也有。
prefab的overrides
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: 也是一样的,就是继承。
unity 预制体(Prefab)相关推荐
- Unity预制体Prefab及其实例化(Instantiate)
简介: 在Unity3D工程建设中,Prefabs(预设)是很常用的一种资源类型,是一种可以被重复使用的游戏对象 可以被置入多个场景中,也可以在一个场景中多次置入 在场景中增加一个Prefab,就是实 ...
- 【Unity】预制体Prefab使用说明
预制体Prefab使用说明 一.预制体的基本介绍 1.预制体是什么? 2.使用预制体的好处 二.使用方法 1.创建 Prefab 2.实例化 Prefab 3.更新 Prefab 三.注意事项 四.可 ...
- cocoscreater预制体prefab全攻略
预制体prefab 怎么创建预制体 预制体的作用 1.批量创建相同类型的节点 2.提前制作一些特定时机才需要展示出来的节点 什么是预制体,字面意思,还未使用前预先制作好的节点资源,属性等同于普通节点, ...
- Unity一键制作预制体Prefab一键修改Prefab属性
1.适用于制作多个预制体(一个模型文件下面几百个子物体,都需要制作成预制体,这一个一个拖不是要炸裂) 模型资源如下图 ![请添加图片描述](https://img-blog.csdnimg.cn/63 ...
- Unity 理解预制体(Prefab)和预制体变体(PrefabVariant)
关于预制体的要点: 官方文档中已包含关于预制体都是详细介绍,这里不再赘述,以下要点仅供个人回顾以及总结. 官方文档快捷入口:(ง •_•)ง 预制体的创建 预制体两种修改方式 预制体实例的覆盖和撤销 ...
- Unity3D中的预制体Prefab
目录 1.认识prefab 2.创建prefab 3. Prefab实例化 4.进入Prefab模式: 5.编辑Prefab: 6.Prefab嵌套: 7.Prefab变体: 8.编辑Prefab变体 ...
- Unity预制体和预设
一直以为预设就是Prefab.查看官方文档,才知道预设的含义 预设 - Unity 手册 (unity3d.com) 预制体(Prefabs)在unity3d中用的比较多.相当于一个模板.我把它当作是 ...
- Unity -- 预制体与变体
1.一个游戏物体的图标为蓝色的时候,表明这个游戏物体是通过预制体创建的 当我们在修改预制体的时候,通过预制体创建的游戏物体也会同步修改(给预制体添加组件的时候,通过预制体创建的游戏对象也会添加对应的组 ...
- unity预制体与非预制体的区别
预制体: 首先预制体是预先准备好的物体,可以重复使用和利用的.就如同我们编程语言中的函数. 区别: 预制体与非预制体的区别: 在hierarchy中预制体是蓝色的,非预制体是白色的. 在inspect ...
最新文章
- ie8下ewebeditor无效的解决办法
- php 写 mysql 事件_PHP日歷,包含來自MySQL數據庫的重復事件
- 博途pcpg接口无法选择_博途TIA功能,如何创建一个S7-1200的项目及硬件组态?
- 搭建gitlab及部署gitlab-runner
- html调用父页面的函数,js调用父框架函数与弹窗调用父页面函数的方法
- io.jsonwebtoken.ExpiredJwtException jwt令牌过期
- Python爬虫抓取 python tutorial中文版,保存为word
- 20172330 2017-2018-2 《程序设计与数据结构》实验一报告
- 十大经典排序算法总结 (Python)
- 极大值极小值搜索设计五子棋
- 怎样快速修改论文格式-使用人工智能技术助手
- AD使用总结4——PCB天线知识
- C#进阶高级程序员开发必知必会:泛型的定义实操案例: 实现堆栈的后进先出功能
- Python3实现HTTP请求
- 5G在智慧农业中的实践和探索
- C#调用大华相机SDK获取图片,转换成VisionPro的Icogimage格式
- 【安全牛学习笔记】cookie安全问题
- ARP欺骗实验-Wireshark-长角牛网络监控
- 微信小程序之获取百度语音合成
- 谈谈我对协议栈设计和架构的理解