除了變換(當父對象被移動,然後孩子也被移動時),子對象在Unity中從它的父對象繼承了什麼?Unity3D - 子對象從父對象繼承的是什麼?
2
A
回答
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.position
和Transform.localPosition
都將是(1,0)。現在如果我們將GameObject A移動到(2,0),我們會看到B會移動到(3,0)的世界空間中,但其Transform.localPosition
仍然是(1,0),因爲這是相對於A的位置。
孩子不會繼承父項的任何其他內容,但該關係可用於通過Transform.parent
和Transform.GetChild
獲取彼此的引用。
相關問題
- 1. 原型繼承爲什麼子對象不能從父對象繼承方法?
- 2. 有從特定的父對象繼承的子對象
- 3. 對象繼承父對象的屬性
- 4. 如何從父對象繼承父對象到另一個父對象?
- 5. OOP JavaScript對象繼承(父/子)
- 6. Python繼承 - 父對象作爲子對象的參數
- 7. c#繼承:將父對象轉換爲子對象
- 8. 如何創建從父對象繼承的對象?
- 9. 如何將兩個父對象繼承到子對象,但第二個繼承對象的參數是第一個繼承對象
- 10. 爲什麼有必要從Python中的對象繼承子類?
- 11. 什麼是父對象的子對象關聯?
- 12. 什麼是承諾對象?
- 13. 爲什麼繼承對象類型
- 14. 繼承的對象
- 15. 繼承類從對象
- 16. 從2個對象繼承
- 17. 將父類對象分配給SpriteKit中的繼承類對象
- 18. 對象不繼承父對象的功能
- 19. NHibernate繼承從父類創建子對象
- 20. 從繼承子類對象訪問父類虛擬方法
- 21. 破壞父對象Unity3D
- 22. Unity3D移動所有子對象與父對象
- 23. 爲什麼從對象繼承對Python有影響?
- 24. Symfony父ACL(對象訪問權繼承)
- 25. 對象繼承嗎?
- 26. 繼承ActiveRecord對象
- 27. Javascript對象繼承
- 28. 類,對象,繼承?
- 29. Javascript對象繼承
- 30. 繼承JavaScript對象
我也有興趣。我認爲變換(位置,旋轉..)是唯一被「保證」共同的組件。所以我的猜測,就是這個。 – Catwood 2014-10-07 13:46:08