除了变换(当父对象被移动,然后孩子也被移动时),子对象在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