预制体与类的类比思维:
    预制体相当于一个类,当它应用到场景当中,就是一个实例。 类的继承特性也充分运用到预制体中,即预制体变体。

相似预制体的需求场景:
        例子1:多个游戏的窗口背景排版一样,只是里面的内容有所不同,下面两个弹框的背景图,标题图,内容图和关闭按钮都相同,但是里面的具体功能控件不同。
     
    例子2:您可能希望在游戏中使用几种不同类型的机器人,这些机器人全都基于同一个基本机器人预制件。但是,您可能想要一些机器人携带物品(加子物体),一些机器人以不同的速度移动(调整参数),或者一些机器人发出额外的声音效果(添加组件)。
    这两个例子都是需要两个很多相似之处、但是又不完成相同的预制体,最原始的方法是在做好第一个预制体后,直接复制一个进行修改即可;但这样做有个明显弊端,就是公共的游戏元素需要修改时,我需要点开每个预制体进行相同的修改操作,例如替换背景图,修改关闭按钮的大小与位置,而且逐一修改很难保证步调一致。
    这时候,如果能够将预制体的相同部分抽象出来,在抽象的预制体(原始预制件)的基础上创建多个属性不同的变体,即Unity提供的共功能,预制体变体(Prafab Varient)。

官文名:PrefabVariants.html
预制体变体的创建:
    1.将场景中的预制体实例拖动到Project面板中,会弹出提示创建新预制体还是预制体变体的面板
 Original Prefab即创建一个全新的预制体,Prefab Variant即创建一个预制体变体。
    2.可在 Project 视图中的预制件上右键单击,然后选择 Create > Prefab Variant。

预制体变体的特性(和预制体实例的特性完全相同)
  1. 属性继承:如果子Prefab的某些属性不动, 则父Prefab的属性影响子Prefab的属性,
  2. 属性定制:如果对子Prefab的某些属性进行修改/覆盖, 则父Prefab的属性无法影响,

注意:不合理的抽象不如不抽象,使用预制体变体和使用基类一样,应尽可能将具有相同功能或者布局的预制体的公共部分抽离出来作为本体。而对于本来就关联不大或者有巨大差别的游戏对象,则分为两个不同的预制体也许比在创建预制体变体更合适;
        如果在后续的开发过程中,发现预制体变体和本体相差过大,则可以通过“UnPack Prafab Completely”解除继承。

















Prafab Varient 预制体变体的更多相关文章

  1. .NET C#杂谈(1):变体 - 协变、逆变与不变

    0. 文章目的:   介绍变体的概念,并介绍其对C#的意义 1. 阅读基础   了解C#进阶语言功能的使用(尤其是泛型.委托.接口) 2. 从示例入手,理解变体   变体这一概念用于描述存在继承关系的 ...

  2. 自然语言19.1_Lemmatizing with NLTK(单词变体还原)

    QQ:231469242 欢迎喜欢nltk朋友交流 https://www.pythonprogramming.net/lemmatizing-nltk-tutorial/?completed=/na ...

  3. 【Visual Lisp】变体与安全数组

    (vlax-make-variant) ;;创建一个未初始化的变体 ;;01.整型值变体(setq myvar (vlax-make-variant 10)) ;;创建整型值变体,返回 #<va ...

  4. labview 变体数据类型

    变体数据类型是LabVIEW中多种数据类型的容器.将其它数据转换为变体时,变体将存储数据和数据的原始类型,保证日后可将变体数据反向转换. 例如,如将字符串数据转换为变体,变体将存储字符串的文本,以及说 ...

  5. Bootstrap 标签的变体 实例样式

    Bootstrap 标签样式,代码如下: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 标签的 ...

  6. Odoo / PS Cloud12版本中,产品变体功能如何使用

    场景: 产品:陶瓷马克杯 产品颜色变体:红色.蓝色.白色 产品尺寸变体:10CM.12CM.15CM 每个变体都有不同价格维度 odoo / PS Cloud 专业实施开发 EMAIL:1715860 ...

  7. 二叉查找树及B-树、B+树、B*树变体

    动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ), 都是典型的 ...

  8. (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)

    干货 | 图解LSTM神经网络架构及其11种变体(附论文) 2016-10-02 机器之心 选自FastML 作者:Zygmunt Z. 机器之心编译  参与:老红.李亚洲 就像雨季后非洲大草原许多野 ...

  9. 完全图解RNN、RNN变体、Seq2Seq、Attention机制

    完全图解RNN.RNN变体.Seq2Seq.Attention机制 本文主要是利用图片的形式,详细地介绍了经典的RNN.RNN几个重要变体,以及Seq2Seq模型.Attention机制.希望这篇文章 ...

随机推荐

  1. Jmeter 函数助手对话框简单使用

    第一步 打开Jmeter,Tools > 函数助手对话框  下拉框选择_CSVRead ,如下图所示: 第二步: 准备一份测试数据,保存在本地盘符里,数据如下图所示: 第三步,填数据,  (1) ...

  2. ubuntu裸机启动python博客项目

    关注公众号"轻松学编程"了解更多. 在linux的ubuntu(18.04)中正确安装python的命令: sudo apt clean sudo apt update sudo ...

  3. keras中的early stopping

    目的:防止过拟合 # early stoppping from keras.callbacks import EarlyStopping early_stopping = EarlyStopping( ...

  4. http代理阅读2

    向上游服务器发送请求处理 static void ngx_http_upstream_send_request(ngx_http_request_t *r, ngx_http_upstream_t * ...

  5. linux 进程间通信 共享内存 shmat

    系统调用mmap()通过映射一个普通文件实现共享内存.系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信.也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shm ...

  6. 蒲公英 · JELLY技术周刊 Vol.30: 此路不通?Vue 3 新提案 Ref-sugar

    蒲公英 · JELLY技术周刊 Vol.30 随着 Vue 3 发布,相关的新闻也逐渐火热起来,而近期 RFC 中两个新的提案也因为某乎上的一些事情变得广为人关注.Ref sugar和script s ...

  7. python + appium 执行报错整理

    1.driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys("adidas" ...

  8. rbd的image快照与Pool快照

    前言 这个问题是不久前在ceph社区群里看到的,创建image的时候,当时的报错如下: 2016-12-13 23:13:10.266865 7efbfb7fe700 -1 librbd::image ...

  9. 配置cobbler步骤

    首先找到下载包的地址 (使用的是centos6) http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/Cen ...

  10. WireShark——ARP 协议包分析

     1. 什么是ARP ARP(Address Resolution Protocol)协议,即地址解析协议.该协议的功能就是将 IP 地 址解析成 MAC 地址. ARP(Address Resolu ...