Unity篇08:transform 和 gameObject的关系 - kudan-game/ArtArtist-Repo GitHub Wiki

transform和gameObject都作为Unity脚本所依赖的实例化对象,他们的区别和联系时什么呢?

1.二者的含义

  • transform : 当前游戏对象的transform组件
  • gameobject :当前游戏对象的实例

2.两者的联系和区别

  • 在unity中每个游戏对象都是一个gameobject。脚本中的gameobject就代表着本脚本所依附的对象。每个gameobject都包含各种各样的组件,但从这点可以看出transform是gameobject的一个组件,控制着gameobject的位置,缩放,和旋转,而且每个gameobject都有而且必有一个transform组件。
  • gameobject是一个父集,派生自object。而transform只是gameboject的子集,它包含如位置、旋转、缩放信息,它派生自component,属于组件。
  • gameobject.find用来获取场景中那个我们需要查找的对象(object)。而transform.find方法则是获取当前对象的子对象下我们需要获取的目标对象位置信息。
  • 注意: 在update() 中尽量不使用find() 方法,影响性能。

3.gameobject.transform与transform.gameobject

  • gameobject.transform,是获取当前游戏对象的transform组件. 所以在start函数中 gameobject.transform 和this.transform,指向的都是同一个对象。即:
gameobject.transform == this.transform == transform
  • transform.gameobject:可以这么理解为:获取当前transform组件所在的gameobect。所以在start()函数中
transform.gameobject == this.gameobject == gameobect

所以他们可以无限的引用下去,意思就是。

gameobject.transform == this.transform == gameobject.transform.gameobject.tranform == tranform.gameobect.transform

关于Unity类的继承关系如下:

image/unityclass.jpg