C# 为什么Unity在一些函数中使用transform而不是gameObject,比如GetChild()?
Unity使用C# 为什么Unity在一些函数中使用transform而不是gameObject,比如GetChild()?,c#,unity3d,transform,parent-child,gameobject,C#,Unity3d,Transform,Parent Child,Gameobject,Unity使用transform.GetChild(childNum)而不是gameObject.GetChild(childNum) 我知道Unity中的每个游戏对象都有一个变换组件,该函数返回子对象的变换,但是使用GameObject类来获取子对象不是更合乎逻辑,因为它指的是场景或项目中的实际游戏对象,而不仅仅是一个组件?为什么要使用转换来查找层次信息?看起来有点奇怪,但事实就是这样。变换保持位置和大小,并按顺序合并变换以获得项目的最终位置、旋转、倾斜和缩放。因此,它们似乎是保持引擎有效遍历
transform.GetChild(childNum)
而不是gameObject.GetChild(childNum)
我知道Unity中的每个游戏对象都有一个变换组件,该函数返回子对象的变换,但是使用GameObject类来获取子对象不是更合乎逻辑,因为它指的是场景或项目中的实际游戏对象,而不仅仅是一个组件?为什么要使用转换来查找层次信息?看起来有点奇怪,但事实就是这样。变换保持位置和大小,并按顺序合并变换以获得项目的最终位置、旋转、倾斜和缩放。因此,它们似乎是保持引擎有效遍历的连接,以便渲染和更新子级中的
旋转
和位置
因此,这就是它在统一中被定义的方式。要从游戏对象获取第一个子对象,需要转到(this).transform.getChild(0).gameObject
OBJ_A --> transform
|
V
gameObject <-- transform.getChild()
OBJ_A-->变换
|
v
gameObject这可能是一个设计决策。
主要遵循程序员范式“单一责任”
他们将逻辑外包给了另一个类,因为在设计师眼中,它与类gameobject的主要目标无关
为什么转换用于查找分层信息
因为变换在形象上和字面上都充当(并且是)子级和父级之间的锚