Springe zum dritten Absatz für die Frage.Wie kann ich den Wert eines Elements in einem Array über Reflektion erhalten
Kontext: Ich erstelle ein 2D-Raumschiffspiel, und eine der Spielmechaniken ist es, die 7 verschiedenen Teile des Schiffes an die aktuelle Situation anzupassen. Es gibt Voreinstellungen, die Sie können jederzeit zu Power Configurations wechseln. Ich habe die Macht Konfigurationen in 3 verschiedenen Arrays gespeichert, etwa so:
int[] powerConfiguration1 = new int[7] {10,10,10,10,20,20,20};
int[] powerConfiguration2 = new int[7] {20,20,20,10,10,10,10};
int[] powerConfiguration3 = new int[7] {10,20,10,20,10,20,10};
Wenn Sie Konfigurationen wechseln, ist es eine Methode aufruft, so zu tun. Die Methode führt einige Berechnungen durch, um zu bestimmen, wie lange es dauern wird, um Konfigurationen zu wechseln. Anstatt jedoch eine switch-Anweisung zu erstellen und den Code mehrmals zu kopieren/einfügen, wenn der Spieler zu einer der drei Konfigurationen wechselt, möchte ich PropertyInfo in System.Reflections verwenden, um auszuwählen, von welcher Eigenschaft ich Werte abrufen muss.
Frage: Das Problem ist, dass ich nicht weiß, wie man ein Element von einem Array bekommt. Hier ist, was ich bisher habe, wo ich versuche zu bestimmen, wie viel Energie insgesamt umgeleitet werden muss und alles zu einer Variablen hinzufügen muss. 0 ist der Index in der Konfiguration, bei der ich entschieden habe, die Schirmleistung zu speichern. PowerToShields ist die aktuelle Energie, die zu den Shields geleitet wird.
void switchConfiguration(int number) {
PropertyInfo powerConfiguration = GetType().GetProperty("powerConfiguration" + number);
int powerToReroute = 0;
powerToReroute += Mathf.Abs(powerToShields - powerConfiguration[0]);
Könnte jemand bitte erklären, was ich falsch mache und/oder mir zeigen, wie ich es beheben kann? Oder gibt es einen besseren Weg, dies zu tun?
EDIT 1: Dies ist in C# (Unity) codiert.
geposteten Code sieht aus wie C# -Code, bestätigen Sie bitte, dass es – stackuser83
Ja, es ist C# . Gibt es eine Option, die ich irgendwo ankreuzen kann, die Leser sagt, dass es C# ist oder sagst du, dass ich irgendwo in der Post sagen sollte, dass es C# ist? –
sieht aus wie du hast es, es ist markiert C# jetzt – stackuser83