访问Unity3D中的属性

时间:2017-07-13 10:45:13

标签: c# unity3d

我想问为什么使用'sphere'来访问script1中的 sphere.transform.position 的transform.position。但是在script2中,我们可以直接评估transform.Rotate之前没有任何对象,为什么不写为: sphere.transform.Rotate

SCRIPT1

void Update () {

}
private IEnumerator SphereIndicator(Vector3 pos)
{
    GameObject sphere = GameObject.CreatePrimitive (PrimitiveType.Sphere);
    sphere.transform.position = pos;
    yield return new WaitForSeconds (1);
    Destroy(sphere)
}

SCRIPT2

void Update () {
    if (axes == RotationAxes.MouseX) {
        transform.Rotate (0, Input.GetAxis ("Mouse X") * sensitivityHor, 0);
    } 

1 个答案:

答案 0 :(得分:3)

正如您所见here.transform可让您访问游戏对象的转换组件。如果您只使用transform,它就像使用this.transform一样,它将返回附加到调用者脚本附加到的相同游戏对象的Transform组件。

因此,在您的示例中,在 srcipt1 中,您从不同的游戏对象调用Transform组件,但在 script2 中,您正在调用相同游戏对象的组件