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以便明确我们所指的是什么?
this指的是脚本中描述的对象.所有Monobehaviour脚本都是组件,this关键字指的是执行代码的当前组件.
gameObject是场景中的游戏对象.游戏对象具有附加到其上的组件.在Monobehaviour脚本中,您可以使用其中一个this.gameObject或gameObject哪个等效来访问脚本附加到的游戏对象.
参考,因为它说得比我好.
关于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)
这就是为什么你在这两种情况下得到相同的结果.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |