Ich habe zwei Prefabs in meinem Assert; In meiner Szene habe ich Instanzen der beiden Prefabs. Ich versuche, die Farbe aller Instanzen eines Prefab mit einem Knopfklick zu ändern, aber was ich bekomme ist, dass sich die Farbe aller Instanzen der beiden Prefabs ändert. Wie kann ich angeben, dass das Prefab innerhalb einer bestimmten Funktion geändert werden soll? Ich nehme an, dass gameObject sich auf alle SpieleObjekte in meiner Szene bezieht und das ist wahrscheinlich der Grund, warum alle Instanzen ihre Farbe ändern.Ändern Sie die Farbe der vorgefertigten Instanzen
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class eventSensors : MonoBehaviour {
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
}
public void tempSensor() {
print("estas en la funcuion de tempSensor");
// this.gameObject.GetComponent<Renderer>().material.color = Color.red;
//gameObject.GetComponent<Renderer>().sharedMaterial.color = Color.red;
var prefab= Instantiate(gameObject, transform.position, transform.rotation);
prefab.GetComponent<Renderer>().material.SetColor("_Color", Color.red);
}
public void lightSensor()
{
print("estas en la funcuion de lightSensor");
gameObject.GetComponent<Renderer>().sharedMaterial.color = Color.green;
}
//Sent to all game objects before the application is quit
//this is called when the user stops playmode.
private void OnApplicationQuit()
{
//reset all prefab color to default
gameObject.GetComponent<Renderer>().sharedMaterial.color = Color.white;
}
}
Ja, ich habe nur ein einziges Material Ordner im proyect –
Keine Notwendigkeit, mehrere Materialien zu erstellen: siehe meine Antwort. – Kardux
Vorschlag: Stellen Sie Ihre Frage darüber, wie Sie ti gearbeitet haben, als Antwort auf Ihre Frage. – starbeamrainbowlabs