Ich verwende eine OverlapSphere, um alle Collider innerhalb eines bestimmten Radius meines Objekts zu erkennen. Ich filtere dann ein paar, die mir egal sind. Mit den verbleibenden wenigen versuche ich eine Nachricht an diese Objekte zu senden, um ihre Renderfarbe zu aktualisieren. Wann immer es die Nachricht sendet, friert die Einheit ein. Ich habe versucht, etwas zu recherchieren und das Beste, was ich finden konnte, ist, dass Endlosschleifen es einfrieren können. Aber ich sehe kein Potenzial dafür. Hier ist der Code:.SendMessage stürzt Einheit C#
Objekt die Nachricht zu senden:
void sendmyMessage(bool status)
{
Collider[] tiles = Physics.OverlapSphere(gameObject.transform.position, 10);
int i = 0;
while (i < tiles.Length)
{
if(tiles[i].tag == "Tile")
{
//turn light on
if (status == true)
{
tiles[i].SendMessage("Highlight", true);
i++;
}
//turn light off
if (status == false)
{
tiles[i].SendMessage("Highlight", false);
i++;
}
}
}
}
Objekt empfangen Nachricht:
void Highlight(bool status)
{
//turn light on
if(status == true)
{
gameObject.GetComponent<Renderer>().material.color = new Color(0, 0, 0);
}
//turn light off
if(status == false)
{
gameObject.GetComponent<Renderer>().material.color = new Color(1, 1, 1);
}
}
Jede Hilfe ist sehr zu schätzen!
Wo/Wie nennst du 'sendmyMessage'? – UnholySheep