预制体(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)相关推荐

  1. Unity预制体Prefab及其实例化(Instantiate)

    简介: 在Unity3D工程建设中,Prefabs(预设)是很常用的一种资源类型,是一种可以被重复使用的游戏对象 可以被置入多个场景中,也可以在一个场景中多次置入 在场景中增加一个Prefab,就是实 ...

  2. 【Unity】预制体Prefab使用说明

    预制体Prefab使用说明 一.预制体的基本介绍 1.预制体是什么? 2.使用预制体的好处 二.使用方法 1.创建 Prefab 2.实例化 Prefab 3.更新 Prefab 三.注意事项 四.可 ...

  3. cocoscreater预制体prefab全攻略

    预制体prefab 怎么创建预制体 预制体的作用 1.批量创建相同类型的节点 2.提前制作一些特定时机才需要展示出来的节点 什么是预制体,字面意思,还未使用前预先制作好的节点资源,属性等同于普通节点, ...

  4. Unity一键制作预制体Prefab一键修改Prefab属性

    1.适用于制作多个预制体(一个模型文件下面几百个子物体,都需要制作成预制体,这一个一个拖不是要炸裂) 模型资源如下图 ![请添加图片描述](https://img-blog.csdnimg.cn/63 ...

  5. Unity 理解预制体(Prefab)和预制体变体(PrefabVariant)

    关于预制体的要点: 官方文档中已包含关于预制体都是详细介绍,这里不再赘述,以下要点仅供个人回顾以及总结. 官方文档快捷入口:(ง •_•)ง 预制体的创建 预制体两种修改方式 预制体实例的覆盖和撤销 ...

  6. Unity3D中的预制体Prefab

    目录 1.认识prefab 2.创建prefab 3. Prefab实例化 4.进入Prefab模式: 5.编辑Prefab: 6.Prefab嵌套: 7.Prefab变体: 8.编辑Prefab变体 ...

  7. Unity预制体和预设

    一直以为预设就是Prefab.查看官方文档,才知道预设的含义 预设 - Unity 手册 (unity3d.com) 预制体(Prefabs)在unity3d中用的比较多.相当于一个模板.我把它当作是 ...

  8. Unity -- 预制体与变体

    1.一个游戏物体的图标为蓝色的时候,表明这个游戏物体是通过预制体创建的 当我们在修改预制体的时候,通过预制体创建的游戏物体也会同步修改(给预制体添加组件的时候,通过预制体创建的游戏对象也会添加对应的组 ...

  9. unity预制体与非预制体的区别

    预制体: 首先预制体是预先准备好的物体,可以重复使用和利用的.就如同我们编程语言中的函数. 区别: 预制体与非预制体的区别: 在hierarchy中预制体是蓝色的,非预制体是白色的. 在inspect ...

最新文章

  1. ie8下ewebeditor无效的解决办法
  2. php 写 mysql 事件_PHP日歷,包含來自MySQL數據庫的重復事件
  3. 博途pcpg接口无法选择_博途TIA功能,如何创建一个S7-1200的项目及硬件组态?
  4. 搭建gitlab及部署gitlab-runner
  5. html调用父页面的函数,js调用父框架函数与弹窗调用父页面函数的方法
  6. io.jsonwebtoken.ExpiredJwtException jwt令牌过期
  7. Python爬虫抓取 python tutorial中文版,保存为word
  8. 20172330 2017-2018-2 《程序设计与数据结构》实验一报告
  9. 十大经典排序算法总结 (Python)
  10. 极大值极小值搜索设计五子棋
  11. 怎样快速修改论文格式-使用人工智能技术助手
  12. AD使用总结4——PCB天线知识
  13. C#进阶高级程序员开发必知必会:泛型的定义实操案例: 实现堆栈的后进先出功能
  14. Python3实现HTTP请求
  15. 5G在智慧农业中的实践和探索
  16. C#调用大华相机SDK获取图片,转换成VisionPro的Icogimage格式
  17. 【安全牛学习笔记】cookie安全问题
  18. ARP欺骗实验-Wireshark-长角牛网络监控
  19. 微信小程序之获取百度语音合成
  20. 谈谈我对协议栈设计和架构的理解

热门文章

  1. poj2226 Muddy Fields 填充棒子(二分匹配)
  2. Ubuntu 上 Nginx 报错 502 Bad Gateway
  3. diea导入别人的项目遇到的一丢丢问题
  4. Unity3d 移除某个GameObject的所有子物体
  5. FPGA实现灰度转换:RGB转YCBCR
  6. 【NKOJ-1096】母牛回家
  7. BI大数据项目的0-1开展模型
  8. oracle tabe unlock_oracle数据库管理常用语句(不断更新中)
  9. 被国人误传了数千年的七句话
  10. 网络传输的异步、同步传输的实现原理