Unity使用 transform.GetChild(childNum)
相对于 gameObject.GetChild(childNum)
.
我理解Unity中的每个GameObject都有一个Transform组件,函数会返回子类的Transform,但使用GameObject类来获取子类不是更合理吗,因为它指的是场景或项目中实际的GameObject,而不仅仅是一个组件?为什么要用Transform来查找层次信息?
为什么要用Transform来查找层次信息?
因为Transform在子代和父代之间起着(也是)锚定的作用,无论是形象的还是字面的。
这看起来有点奇怪,但事实就是这样。变形保持了位置和大小,而变换依次合并,得到了一个项目的最终位置、旋转、倾斜和比例。所以看起来,它们是保持连接,以便高效地遍历引擎进行渲染和更新。rotation
和 position
在孩子们的身上。
因此,这只是Unity中的定义方式。要想从一个gameObject到第一个子代,你需要到 (this).transform.getChild(0).gameObject
.
OBJ_A --> transform
|
V
gameObject <-- transform.getChild()
只是一个定义问题。将来不会改变(除非看DOTS)。
这可能是一个设计上的可取之处。主要是遵循程序员的范式 "单一责任"。
他们把逻辑外包给另一个类,因为在设计者眼里,它与类gameobject的主要目标无关。