#虚幻引擎#unity3d#游戏开发#建筑学
这是我在其他人的虚幻引擎项目中遇到的一种常见(反)模式:一个附加了一个或多个碰撞组件的网格。这会起作用,但它不是最佳的,并且可能表明开发人员已经习惯了 Unity。
Unity vs Unreal Engine:组件的组合与组件内的组合
标准转换层次结构
Unity 和虚幻引擎之间的一个重要架构差异是组件和标准变换层次结构之间的关系。“标准变换层次结构”是指内置组件和用户代码共享对一组通用变换(位置、旋转、缩放)和层次结构(父/子引用)值的访问的接口。在任何现代游戏引擎中,总会有一个1中央变换层次结构实现,作为所有 3D 事物的可访问和可预测的主干。正是这种原生层次结构支持编辑器的拖动移动功能、重叠检测和渲染剔除等功能,所有这些都不需要游戏开发人员在编辑器事件、物理子系统和渲染子系统之间显式读取和写入转换值.
在 Unity 中,Transform 组件是标准变换层次值的唯一所有者,并且是一个密封类;每个游戏对象只有一个变换组件,反之亦然;依赖于变换的组件(例如,需要知道在哪里渲染的网格)使用其游戏对象的一个变换组件的变换。
在虚幻引擎中,场景组件是标准变换层次值的指定所有者;变换相关组件是场景组件的子类。看起来好像Actor 也具有标准变换值,但这只是因为每个 Actor 至少有一个场景组件(相反,场景组件完全能够在没有任何拥有的 Actor 的情况下存在)。
基本上,区别归结为:两个引擎都有由“组件”类组成的“实体”类。在 Unity 中,“实体”类有一个变换;在虚幻引擎中,“组件”类可以有一个变换。差异可能看起来很微妙,但具有重要的架构含义,并表明每个引擎中的模式更广泛。
模式外推:组合与继承?
Unity 中的 Mesh Renderer 没有变