2016-06-05 11 views
0

Ich entwickle ein Unity-Projekt.In dem ich habe ein Fertighaus, wo es mehrere Instanzen dieser Fertighaus wird in der Szene generiert werden.Ich möchte eine Instanz dieser Fertighaus auswählen und ändern die Farbe des Fertigbaus.Ermitteln einer einzelnen Instanz eines Fertig

aber dies ändert alle Instanzen der Prefab.Wie kann ich es zu einem einzigen Objekt ändern.

+1

Sobald Sie eine Instanz haben, ist es kein Prefab mehr. –

+0

Bezieht sich 'wallprehab' auf das Prefab oder die Instanz? –

+0

@MiladQasemi Its the Prefab – User8

Antwort

0

ändern ändern die Farbe des Objekts, indem die Instanz des Prefab und nicht das Prefab selbst gefunden wird. Benutze einen Raycast um das Spielobjekt zu finden. (Da Sie auf Mausklick Ereignis reagieren Ich gehe davon aus, dass Sie das Objekt ausgewählt werden, die Sie die Farbe ändern möchten)

private RaycastHit hit; 

void Update(){ 

    Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit); 

     if (Input.GetMouseButtonDown(1) && hit.collider){ 
      hit.collider.gameObject.renderer.material.color = Color.red; 
     } 

} 

Dont forgrt ein Collider zum Fertig hinzuzufügen.

0

Da alle Ihre Objekte das gleiche Material verwenden, ist es nicht möglich, eine Farbe zu ändern, ohne andere zu beeinflussen. Eine Möglichkeit besteht darin, eine Kopie dieses Materials zu erstellen und diese Farbe zu ändern gleichen Material
das einzige, was Sie brauchen in Ihrem Code differ zu tun ist, um die Referenz auf die Instanz nicht die Fertig auf diese Weise erhalten, wenn Sie das Material zur Laufzeit ein neues Material erstellt werden

Gameobject go = Instantiate(myPrefab); 
go.renderer.material.color = Color.blue; 
+0

Ich habe die Idee können Sie bitte zeigen Sie ein Beispielcode – User8

+0

Bearbeitete meine Antwort –

Verwandte Themen