ue3d继承与组合在Unity中的不同之处

继承与组合在Unity中的不同之处

分类:
ue3d - 继承与组合在Unity中的不同之处

Unity 中的继承允许类具有其他现有类的属性,这有助于扩展到子类并让这些子类被识别为父类。而组合是一种构建对象的模块化易于编辑的方式。但在 Unity 中为了更好的维护、扩展游戏对象是通过组合而不是经典继承来构建的。所以我们一起来看看他们俩者的不同之处在哪里?

在传统游戏开发中,敌人类是基类的扩展,例如 NPC,不同种类的敌人都是从敌人超类扩展而来的,所以继承允许类具有其他现有类的属性。

而 Unity 使用另一种称为组合的方法向游戏对象添加功能。对于组合,每个功能都被拆分为可以模块化添加到游戏对象的类,允许通过混合和匹配能力来创建功能。

所以继承和组合不是相互排斥的,如果你正确使用他们则是一个相互依赖的关系,使其变的更加强大,但它们本质上代表了两种对立的思考任何特定问题的方式。

ue3d - 继承与组合在Unity中的不同之处

就好比在吃鸡游戏中角色拾取到一枚手榴弹,在投掷预定点,它会自行爆炸,但在此过程你拾取到其他类型不同型号的手榴弹,那么此时手榴弹唯一的相同点是会爆炸,所以从原先的手榴弹可以使用继承来得到该手榴弹的一些基本行为,为此我们只需要稍微修改一个新方法就行。

那么此过程我们是不是重用了代码?其他所有的处理都会将两个子类识别为手榴弹,那么继承的好处就在这里了。

那么问题来了!如果是一枚哑弹呢?十几个甚至上百个手榴弹呢?因为在执行的过程都是预先设定好的爆炸,如果他们有自己的独立属性呢?那么继承会让手榴弹变得非常的混乱不堪。因为哑弹和爆炸彼此之间没有父子关系,他们是完全独立的属性,那这就是为何组合会得到广泛使用的原因之一了。

结论很明显!组合是模块化的易于编辑的方式,具有较高的灵活性,而不是从层次结构中继承。不必一遍又一遍地重写 10 个组件,因为很大程度上会有一些不同。

而面向对象的多重继承在实际工作当中往往是不太可完美实现的。但在很多情况下,组合也并不是一个完美的选择。从某种角度上看继承,如果使用得当,它未必不是一个有用的工具。

相关信息

  • 类型:知识
  • 字数:726
  • 字符:1576
  • 适用软件:Unity
  • 说明:无
  • 编号:78629

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!