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

相似预制体的需求场景:
        例子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. 1,web项目工作流程

    1.1 了解web程序工作流程 .1.2django生命周期

  2. Appium常用操作之「微信滑屏、触屏操作」

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.滑屏操作 1.访问之后,马上就滑屏可以吗? 2.连续实现 2 次滑屏 3.代码 二.模拟触屏 ...

  3. 我用 Python 撸了一个 plist 图集拆图工具!附上github源码

    这些年,我一直在使用 JavaScript .CocosCreator 做开发,只要是他们不能解决的,我都不太愿意去弄,或者说是不太情愿去做.真的是手中有把锤子,看什么都是钉子,越是熟悉一样东西,越容 ...

  4. 参悟python元类(又称metaclass)系列实战(一)

    写在前面 之前在看廖雪峰python系列的教程时,对元类的章节一直头大,总在思考我到底适不适合学习python,咋这么难,尤其是ORM的部分,倍受打击:后来从0到1手撸了一套ORM,才稍微进阶了一点理 ...

  5. Flink的DataSource三部曲之一:直接API

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. canvas生成圆图和微信小程序canvas圆图

    先在HTML中创建 img和canvas并设置id属性 <canvas id="canvas" width="500" height="500& ...

  7. 常用-DNS

    1.1.1.1 cloudflare 1.0.0.1 119.29.29.29 腾讯 114.114.114.114 114.114.115.115 114.114.114.119财务 114.114 ...

  8. c#习题之2

    string str = null; Console.WriteLine("请输入一个字符串"); str = Console.ReadLine(); char[] c = new ...

  9. ner处理数据的方式

    ner处理数据的方式biodef load_data(filename): features = [] labels = [] f = open(filename, encoding='utf-8') ...

  10. leetcode68-search-in-rotated-sorted-array-ii

    题目描述 继续思考题目 "Search in Rotated Sorted Array": 如果数组种允许有重复元素怎么办? 会影响时间复杂度吗?是怎样影响时间复杂度的,为什么? ...