为什么Unity使用transform而不是gameObject的一些函数,如GetChild()?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Unity使用transform而不是gameObject的一些函数,如GetChild()?相关的知识,希望对你有一定的参考价值。
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的主要目标无关。
以上是关于为什么Unity使用transform而不是gameObject的一些函数,如GetChild()?的主要内容,如果未能解决你的问题,请参考以下文章
使用 mgcViz 绘制 GAM 平滑效果时的时间(小时)格式
图解unity下gameobject和transform的区别和关联
Unity3D之UGUI:Rect Transform与Anchor