2017-03-31 2 views
0
GameObject cube = Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT); 
cube.GetComponent<Renderer>().material.color = Color.blue; 

Wenn ich ordnen Sie die Farbe i Ausnahme auf der Linie bekommen bin:Wie kann ich einen Renderer zum Spielobjekt im Skript hinzufügen?

cube.GetComponent<Renderer>().material.color = Color.blue; 

MissingComponentException: Es gibt keine ‚Renderer‘ auf die „CubeHolder“ -Spiel Objekt angebracht, aber ein Skript versucht, um darauf zuzugreifen. Wahrscheinlich müssen Sie dem Spielobjekt "CubeHolder" einen Renderer hinzufügen. Oder Ihr Skript muss prüfen, ob die Komponente angehängt ist, bevor Sie es verwenden.

HINWEIS:

Ich bin mit der CUBE Klasse von this Antwort einen Würfel zu schaffen, nicht dem GameObject.CreatePrimitive Funktion Unity.

Antwort

1

Als ich die CUBE class schrieb, vergaß ich zu erwähnen, dass der Renderer der Cubes nun ein Kind eines anderen Objekts ist.

Sie müssen Renderer oder MeshRenderer nicht zum Cube hinzufügen. Es ist schon da. Der Cube ist einfach ein untergeordnetes Objekt und das übergeordnete Objekt heißt CubeHolder. Sie müssen GetComponentInChildren verwenden, um Renderer zu erhalten.

cube.GetComponent<Renderer>().material.color = Color.blue; 

sollte jetzt sein:

cube.GetComponentInChildren<Renderer>().material.color = Color.blue; 
+0

Könnten Sie vielleicht bearbeiten auch die Frage selbst, die Tatsache zu schließen, dass die OP diese spezifische Klasse verwendet, und nicht irgendein Gameobject? (wie es derzeit ein XY-Problem ist und auch ein MCVE fehlt). @Sharon Giselle könnte/sollte das auch tun. – Keiwan

+0

Das ist include weil es OP sagt 'Cube.CreatePrimitive (Cube.CubePivotPoint.UPLEFT);' in der Frage. Es wäre zwar gut, auf diese alte Antwort zu verweisen. Ich werde das machen. – Programmer

Verwandte Themen