2014-10-07 114 views
2

除了變換(當父對象被移動,然後孩子也被移動時),子對象在Unity中從它的父對象繼承了什麼?Unity3D - 子對象從父對象繼承的是什麼?

+0

我也有興趣。我認爲變換(位置,旋轉..)是唯一被「保證」共同的組件。所以我的猜測,就是這個。 – Catwood 2014-10-07 13:46:08

回答

2

Unity的繼承不像純粹的OOP繼承。這不像一個基類提供一個孩子繼承的虛擬成員。

在Unity中,子對象繼承只有Transform。它並沒有真正地繼承它,它只是成爲它自己的Transform組件的基礎,因此在修改子組件時它將相對於父組件。由於所有對象默認都需要至少只有一個組件(Transform),它幾乎可以由子對象繼承。

2

孩子不會直接繼承父變換,而是孩子變換與父母變換相對。因此,如果我們以變換位置爲例,沒有父項的GameObject將與世界座標相關,而帶有父項的GameObject將與父項位置相關。你可以使用localPosition得到相對位置,如果GameObject沒有父母,那麼它將等於Transform.position

至於更具體的例子(我將使用二維座標爲簡單起見):

說,我們在世界上的地位(0,0)沒有任何的父母有一個遊戲物體(A)。其Transform.position將(0,0)和Transform.localPosition也將(0,0)。如果我們添加另一個遊戲對象(B),使它成爲A的子元素並將其世界位置設置爲(1,0),那麼其Transform.positionTransform.localPosition都將是(1,0)。現在如果我們將GameObject A移動到(2,0),我們會看到B會移動到(3,0)的世界空間中,但其Transform.localPosition仍然是(1,0),因爲這是相對於A的位置。

孩子不會繼承父項的任何其他內容,但該關係可用於通過Transform.parentTransform.GetChild獲取彼此的引用。