【发布时间】:2015-01-12 08:15:43
【问题描述】:
我正在开发一个 3D 引擎 API(一个渲染引擎,而不是游戏引擎本身),并试图让类名正确。
在我的系统中,我有很多组件,例如“相机”、“变换”、“灯光”、“材质”等,其中包括我称为“对象”的另一种组件类型。
每个“对象”都有一个链接到每个其他组件类型,即。指向“相机”的链接、指向“素材”的链接等等。
相当标准的东西。
我的问题是——应该称为“对象”或“实体”,还是其他什么?
谁能给我指点关于这些概念的经典文献?对许多人来说似乎是个人喜好问题,但为了最大限度地理解文档,我想明确这一微妙之处。
【问题讨论】:
-
我不认为该领域的文献不代表其作者的个人品味。问题是您的“对象”到底是什么以及为什么它包含指向这些组件的链接 - 我希望这里有某种形式的继承。如果这些对象是场景图的一部分,也许“节点”是正确的强调这一点。如果他们纯粹是编程“助手”,将这些组件组合成一个列表“对象”或与编程相关的其他东西会更好。 “实体”作为抽象的“存在的东西”可能并非如此,因为“物质”更像是实体的属性。
-
啊哈是的——所以“对象”意味着 OOP。 “材料”可以被视为“实体”的“方面”或属性。我想我只是想了解人们心中的含义,这很有帮助。
-
"Object" 并不会严格暗示 oop,因为它也可以指代真实世界的对象——但我认为在这种情况下,大多数人在听到它时都会想到 oop。同样,对于“方面”或“属性”,上下文很重要。虽然方面对我来说似乎更通俗或更抽象,但属性是在描述“材料”等的上下文中听到的。这完全取决于您所考虑的设置。如果涉及着色器,有些人可能会将“属性”视为特殊GLSL 中的 shader 变量,所以如果你想强烈关注 GLSL,你可能想要别的东西,但我认为没关系。
-
我想说:材料可以被视为实体的属性。 (但事实并非如此)。
标签: naming-conventions game-engine naming