为什么Unity使用transform而不是gameObject的一些函数,如GetChild()?

问题描述 投票:0回答:1

Unity使用 transform.GetChild(childNum) 相对于 gameObject.GetChild(childNum).

我理解Unity中的每个GameObject都有一个Transform组件,函数会返回子类的Transform,但使用GameObject类来获取子类不是更合理吗,因为它指的是场景或项目中实际的GameObject,而不仅仅是一个组件?为什么要用Transform来查找层次信息?

unity3d transform parent-child children gameobject
1个回答
2
投票

为什么要用Transform来查找层次信息?

因为Transform在子代和父代之间起着(也是)锚定的作用,无论是形象的还是字面的。


1
投票

这看起来有点奇怪,但事实就是这样。变形保持了位置和大小,而变换依次合并,得到了一个项目的最终位置、旋转、倾斜和比例。所以看起来,它们是保持连接,以便高效地遍历引擎进行渲染和更新。rotationposition 在孩子们的身上。

因此,这只是Unity中的定义方式。要想从一个gameObject到第一个子代,你需要到 (this).transform.getChild(0).gameObject .

OBJ_A        -->   transform
                       |
                       V
gameObject   <--   transform.getChild()

只是一个定义问题。将来不会改变(除非看DOTS)。


0
投票

这可能是一个设计上的可取之处。主要是遵循程序员的范式 "单一责任"。

他们把逻辑外包给另一个类,因为在设计者眼里,它与类gameobject的主要目标无关。

© www.soinside.com 2019 - 2024. All rights reserved.