Unity3D - 子对象从其父对象继承了什么?

时间:2014-10-07 13:38:34

标签: unity3d

除了转换之外,子对象从Unity中的父对象继承了什么(移动父对象,然后移动子对象)?

2 个答案:

答案 0 :(得分:2)

Unity的继承并不像纯OOP继承。它不像基类提供子继承的虚拟成员。

在Unity中,子对象仅继承 Transform。它并没有真正继承它,它只是它自己的Transform组件的基础,因此在修改子组件时它将相对于父组件。由于默认情况下所有对象至少只需要一个组件(Transform),几乎所有组件都可以由子对象继承。

答案 1 :(得分:2)

孩子不会直接继承父变换,而是子变换变得相对于父变换。因此,如果我们以变换位置为例,没有父级的GameObject将相对于世界坐标,而具有父级的GameObject将相对于父级位置。您可以使用localPosition获取相对位置,如果GameObject没有父项,则相等于Transform.position

作为一个更具体的例子(为了简单起见,我将使用2D坐标):

假设我们在没有任何父母的世界位置(0,0)有一个GameObject(A)。其Transform.position将为(0,0),Transform.localPosition也为(0,0)。

如果我们添加另一个GameObject(B),将其设为A的子级并将其世界位置设置为(1,0),则其Transform.positionTransform.localPosition都将为(1,0) )。

现在如果我们将GameObject A移动到(2,0),我们会看到B将移动到世界空间中的(3,0),但它的Transform.localPosition仍然是(1,0)因为这是相对于A的位置。

孩子不会从父母那里继承其他任何东西,尽管可以在代码中使用这种关系来通过Transform.parentTransform.GetChild获得彼此的引用。