我很困惑的是:
代码(CS01.cs)
该脚本附加到一个简单的 Cube 对象。
using UnityEngine;
using System.Collections;
public class CS01 : MonoBehaviour {
// Use this for initialization
void Start () {
Debug.Log (this); //--> Cube(CS01)
Debug.Log (this.GetType()); //--> CS01
Debug.Log (this.GetType() == typeof(UnityEngine.GameObject)); //--> False
Debug.Log (this == gameObject); //--> False
Debug.Log (this.name); //--> Cube
Debug.Log (gameObject.name); //--> Cube
this.name = "Hello"; // --> Will get the gameObject's name changed to 'Hello'
Debug.Log (gameObject.name); //--> Hello
}
// Update is called once per frame
void Update () {
}
}
1> 意志CS01
是一个脚本对象吗?
DOC:Unity 内部的脚本包括附加自定义脚本
游戏对象称为行为的对象。
2> 在Component
对象,像变换,渲染器,刚体这样的变量被引用到的组件gameObject
this Component
附于.所以在剧本中,this.renderer.material.color = Color.red;
相当于this.gameObject.renderer.material.color = Color.red
。然而,变量的描述name
在文件中name: The name of the object.
只告诉它是对象的名称。
3> 那么,如何理解上面的代码呢?是否变量name
还返回name
该脚本附加到的游戏对象的?
4> this
表示脚本对象,而不是脚本附加的游戏对象,对吗?
如果您附加CS01
到场景中的一个游戏对象,并且该游戏对象将被加载,您将拥有每个游戏对象的一个实例。施工期间CS01
before Awake
and OnEnable
被称为,所有属性如gameObject
, tranform
, name
等被初始化。如果它们引用一个对象,它们中的大多数将获得对父级属性的引用。
string
类在 C# 或 java 中有些特殊,其行为类似于struct
- 这将是某种复制的。详细地:CS01.name
(继承自Unity.Object
) 将获取游戏对象的名称。只要它们具有相同的名称,两个变量就指向内存中的同一位置。当您更改 CS01 的名称时,会出现一个新的string
实例将在内部创建,并使用您分配给它的文本进行初始化。因此游戏对象的原始即名称属性将保持不变。
- Yes
- 大多数组件都有引用的属性
GameObject
属性,快捷方式类型
- 就像2中那样。
name
是在基类中定义的Object
. GameObject
and MonoBehaviour
两者都源自Unity.Object
.
- 确切地说,这就是您在代码中编写的类
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)