游戏对象在它附加的GameObject的脚本中是否等效于此?

use*_*710 1 c# unity-game-engine unity5

我有一个关于在编写Unity脚本时gameObject继承的用法的问题MonoBehaviour.

在一些教程中,例如,为了制作缩放健康栏,我们检索健康栏的原始比例,如下所示:

originalScale = gameObject.transform.localScale.x;
Run Code Online (Sandbox Code Playgroud)

我玩弄了一下这一点,并认为,因为我正在改变我正在操纵的物体,我也可以使用this:

originalScale = this.transform.localScale.x;
Run Code Online (Sandbox Code Playgroud)

在Unity中,这两个是否总是等价的(至少在实现时MonoBehaviour)?是否只是更常见的使用,gameObject以便明确我们所指的是什么?

For*_*gic 5

this指的是脚本中描述的对象.所有Monobehaviour脚本都是组件,this关键字指的是执行代码的当前组件.

gameObject是场景中的游戏对象.游戏对象具有附加到其上的组件.在Monobehaviour脚本中,您可以使用其中一个this.gameObjectgameObject哪个等效来访问脚本附加到的游戏对象.

参考,因为它说得比我好.


关于transform,这也是一个组件.由于GameObject只是组件的容器,因此当您执行此操作时,gameObject.transform您将引用该转换组件.

因为任何GameObject只有一个变换,所以this.transform也会指向同一个组件.

这是一个特殊情况,因为MonoBehaviour实际上是继承自Component,如果你看看Component类就可以实现

// Summary:
//     ///
//     The Transform attached to this GameObject (null if there is none attached).
//     ///
public Transform transform { get; }
Run Code Online (Sandbox Code Playgroud)

这就是为什么你在这两种情况下得到相同的结果.