在编写Unity脚本时,我对从gameObject
继承的MonoBehaviour
的使用提出了疑问。
在一些教程中,例如,为了制作缩放健康栏,我们检索健康栏的原始比例,如下所示:
originalScale = gameObject.transform.localScale.x;
我玩弄了一下这一点并认为,因为我正在对我正在操纵的物体进行变换,所以我也可以使用this
:
originalScale = this.transform.localScale.x;
在Unity中,这两者是否总是等价的(至少在实施MonoBehaviour
时)?使用gameObject
是否更为常见,以便明确我们所指的是什么?
答案 0 :(得分:5)
this
指的是脚本中描述的对象。所有Monobehaviour 脚本是组件,this
关键字是指当前的 正在执行代码的组件。
gameObject
是场景中的游戏对象。游戏对象有 附加到它们的组件。从Monobehaviour剧本中,你 可以通过使用访问脚本附加到的游戏对象 {/ 1}}或this.gameObject
等同。
Reference,因为它比我说得好。
关于gameObject
,这也是一个组件。由于GameObject只是组件的容器,因此当您transform
时,您正在引用该转换组件。
因为任何GameObject只有一个变换,gameObject.transform
也会指向同一个组件。
这是一个特殊情况,因为MonoBehaviour实际上是继承自Component,如果你看看Component类
this.transform
这就是为什么你在两种情况下得到相同结果的原因。