Answers:
只有Unity开发人员才能为这种设计提供真正的动力,但是支持这种方式的一个论据是,有一个论据认为,软件项目中的每个类都应该承担一个责任。GameObject是一个命名的Components集合,并且向其中添加position / rotation / etc意味着它将承担2个职责。Transform组件处理位置和旋转,因此也不应该负责其他(可能不相关)组件的命名或汇总。因此,将这两个概念存在于两个单独的对象中是有意义的。
更普遍地,这个问题问“如果X和Y之间存在一对一的关系,为什么Y不是X的一部分,反之亦然?” 通常的答案是,即使将2个部分始终协同工作,将其分解成较小的独立部分,软件也更易于开发和维护。
转换是Unity中的必需组件。
变换是强制性组件的原因是游戏对象位于场景中,因此需要有关该对象的空间信息(位置,方向和比例)。(此信息并不总是使用,但保持强制转换组件会使事情变得更加简单)。