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

相似预制体的需求场景:
        例子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. Git的介绍及使用

    一.配置用户信息: 配置用户名和邮箱: $ git config --global user.name "chunyu" $ git config --global user.em ...

  2. 直播软件开发如何使用FFMPEG推流并保存在本地

    最近开发了基于C#的直播软件开发推流器一直不大理想,终于在不懈努力之后研究了一点成果,这边做个笔记:本文着重在于讲解下如何使用ffmpeg进行简单的推流,看似简单几行代码没有官方的文档很吃力.并获取流 ...

  3. ORA-00020: maximum number of processes (40) exceeded模拟会话连接数满

    问题描述:在正式生产环境中,有的库建的process和session连接数目设置的较小,导致后期满了无法连接.因为正式库无法进行停库修改,只能释放连接,做个测试模拟 1. 修改现有最大会话与进程连接数 ...

  4. springboot-rabbitmq之hello-world(一)

    概念介绍 这里引用rabbit官网的一张图 image.png 大概意思就是生产着把消息发送到队列然后消费者消费消息 springboot实现 hello-world比较简单这里直接上代码 生产者 声 ...

  5. Spider_基础总结5--动态网页抓取--元素审查--json--字典

    # 静态网页在浏览器中展示的内容都在HTML的源码中,但主流网页使用 Javascript时,很多内容不出现在HTML的源代码中,此时仍然使用 # requests+beautifulsoup是不能够 ...

  6. switch,case语句易误区

    switch case 语句语法格式如下: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可 ...

  7. PIP安装Django

    1. 2. 3.升级PIP 4. 原来我已经用pycharm装过了,囧~

  8. Python_异常处理、调试

    1.try except 机制 # 错误处理 # 一般程序都要用到错误捕获,当没有加且有错误的时候Python解释器会执行错误捕获,且是一层层向上捕获[所以问题点会在最下面] try: print(' ...

  9. H264Nalu头部解析

    一 NALU头部解析 F: forbidden_zero_bit. 在 H.264 规范中规定了这一位必须为 0. NRI: nal_ref_idc. 取00~11,似乎指示这个NALU的重要性,如0 ...

  10. Natapp内网穿透服务工具

    在做微信开发的时候,调用微信接口成功之后,微信会回调我们事先配置好的一个接口.由于微信的服务是在外网的,所以这个回调接口也只能是外网,而且微信要求回调接口只能是通过ICP备案的域名,不能使用IP,所以 ...