2017-07-13 3 views
0

Ich möchte fragen, warum 'Sphere' verwenden, um auf transform.position zugreifen, die sphere.transform.position in script1 ist. Aber in script2 können wir transform.Rotate direkt bewerten, ohne irgendwelche Objekte davor, warum nicht schreiben als: sphere.transform.Rotate?Zugriff auf die Eigenschaften in Unity3D

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); 
    } 
+3

** Script2 ** modifiziert die Rotationstransformation des gerade parenttierten Objekts. ** Script1 ** ändert die Rotationstransformation des Objekts, die nicht mit diesem bestimmten Skript zusammenhängt. Dies ist keine Frage im Zusammenhang mit Unity, sondern die Frage nach den Grundlagen von OOP. –

Antwort

3

Wie Sie here sehen können, .transform können Sie Komponente des Spiels Object Trans zuzugreifen. Wenn Sie einfach transform verwenden, ist es das gleiche, als würden Sie this.transform verwenden, es wird die Transformationskomponente zurückgeben, die an dasselbe Game-Objekt angehängt ist, an das das Aufruferscript angehängt ist.

So in Ihrem Beispiel, in dem srcipt1 Sie die Komponente aus verschiedenen Spiel-Objekt-Transformation aufrufen, aber in der script2 Sie die Komponente des gleichen Spiels Objekt aufrufen.

Verwandte Themen