Ich habe zwei weiße Sprite-Spielobjekte. Einer wurde rot und der andere grün mit dem Farbwähler im Sprite Renderer dargestellt. Die RGB-Werte sind die gleichen wie im folgenden Code. Beide haben das Tag 'Objekt'.Eine Live-Liste von Spielobjekten basierend auf ihrer Farbe beibehalten
Ich habe 3 Listen, die ich während des Spiels aktualisiert habe - totalObjects, redObjects & greenObjects, die ihre jeweiligen Spielobjekte enthalten. Ich bin in der Lage, TotalObjects zu füllen, aber nicht die anderen beiden.
Hier ist die Code-
public List<GameObject> totalObjects = new List <GameObject>();
public List<GameObject> redObjects = new List <GameObject>();
public List<GameObject> greenObjects = new List <GameObject>();
private Color red = new Color (0.9f, 0.5f, 0.5f, 1.0f);
private Color green = new Color (0.8f, 0.8f, 0.3f, 1.0f);
void Awake()
{
totalObjects.AddRange (GameObject.FindGameObjectsWithTag("object"));
foreach (GameObject x in totalObjects)
{
if (x.GetComponent<SpriteRenderer>().color == red)
{
redObjects.Add(x);
}
else if (x.GetComponent<SpriteRenderer>().color == green)
{
greenObjects.Add(x);
}
}
}
void Update()
{
totalObjects.RemoveAll(GameObject => GameObject == null);
redObjects.RemoveAll(GameObject => GameObject == null);
greenObjects.RemoveAll(GameObject => GameObject == null);
}
Auch die Farbe der Objekte während des Spiels (red> grün & umgekehrt) ändern können, wenn sie einen bestimmten Bereich von einem OnTriggerEnter2D eingeben. Wie aktualisiere ich diese Änderungen in den Listen?
Nun, können Sie nicht einfach die Listen vom Auslöser aktualisieren? –
Wie sollte ich das tun? Wenn zB ein rotes Objekt grün wird, muss es aus der roten Liste entfernt und zur grünen Liste hinzugefügt werden. Ich denke, in gewisser Weise müssen die Listen immer ' scannen 'für die Farben aller Objekte, so dass es alle Änderungen verfolgen kann. Auch aus irgendeinem Grund funktionieren die verschachtelten if-Anweisungen innerhalb der foreach-Schleife nicht. –
Ich schätze, die Objekte werden die Farbe nicht von allein ändern, also wenn Sie ändere die Farbe, entferne sie aus der einen Liste und füge sie zu der anderen hinzu ... – yes