lucprogrammiert Geschrieben 1. Februar 2020 Melden Share Geschrieben 1. Februar 2020 Ich habe in meinem kleinen Game in der Menu-Scene eingebaut, dass ich die Farbe meines Raumschiffs ändern kann. Dabei gibt es zwei Probleme: 1. Ich kann die Farbe des Raumschiffs während einem Spiel nur einmal ändern, und dann auch nicht mehr zurück. 2. Ich möchte, dass dann auch gleichzeitig in meiner Game-Scene die Farbe des Raumschiffs geändert wird, weiß aber nicht wie. Hier die Variable: Und ein Foto der "Menu"- sowie "Game"-Scene Vielen Dank schonmal im Voraus 😁 MfG Luc Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 2. Februar 2020 Melden Share Geschrieben 2. Februar 2020 Du solltest dafür wirklich ein Array benutzen. Wenn das eigentliche Problem gelöst ist und du dazu fragen hast, sag gerne Bescheid Jedenfalls... Da gibt's unterschiedlich elegante Lösungen. Ich denke, die einfachste ist hierfür absolut in Ordnung, und das wäre die statische Variable. Nur für den Fall, dass der Begriff dir nichts sagt: Eine statische Variable gibt's nicht einmal pro Objekt, sondern nur ein einziges Mal im gesamten Programm. Dadurch kannst du beliebig viele Instanzen deines Objekts erzeugen, für alle gilt immer derselbe Wert. Auch, wenn du alle Objekte der Klasse löschst, bleibt der Wert erhalten. Und genau das nützt uns beim Szenenwechsel, denn dass alle Objekte gelöscht werden ist genau das, was da passiert. Mach also aus deinem public int ship1or2; ein public static int ship1or2; und lies den Wert der Variable in Start aus, damit das Raumschiff zum Start der Spielszene das richtige Sprite bekommt. Denke daran, was "static" hier allerdings bedeutet: Wenn du irgendwann mal zwei Schiffe haben solltest, dann gilt für beide immer derselbe Wert. Diese Einschränkung, für ein zweites Schiff erstmal den Code anpassen und eine weitere Variable hinzufügen zu müssen, ist das, was diese Lösung auf Dauer zur weniger eleganten macht. Aber wie gesagt - Sollte für diesen Fall in Ordnung sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
lucprogrammiert Geschrieben 4. Februar 2020 Autor Melden Share Geschrieben 4. Februar 2020 Ich habe jetzt aus dem <public int ein public static bool > gemacht. Das mit dem in der anderen Scene ändern hat auch super geklappt, vielen dank nochmal😀 Jedoch lässt sich mein Knopf immer noch nur einmal drücken, ich habe keine ahnung woran das liegt. Muss ich vielleicht am ende des button scripts ein "stopall" oder ähnliches einfügen? Ich habe es auch schon mit einer UpdateFunktion innerhalb der SwitchShip-Funktion mit einer Update-Funktion versucht, hat auch nicht geklappt😔 Ich hoffe mir kann jmd helfen, und sagen wie ich die Farbe x-mal ändern kann. Hier ist das aktualisierte Script des Buttons: Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TurTur Geschrieben 4. Februar 2020 Melden Share Geschrieben 4. Februar 2020 Du initialisierst am Anfang deiner Funktion die Variablen 'shipcolor[]' bei jedem Aufruf neu. Dadurch wird nur der zweite Zweig der Bedingungsabfrage ausgeführt. shipcolor[0] = true; shipcolor[1] = false; Ist diese initialisierung erforderlich, dann packe sie in eine Start-Routine. Wenn du diese Anweisungen aus der Funktion entfernst, sollte es funftionieren. Gruss TurTur Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
lucprogrammiert Geschrieben 5. Februar 2020 Autor Melden Share Geschrieben 5. Februar 2020 Vielen Dank, dass hat geklappt Das hat jetzt nichts mit diesem Thema zu tun, aber meine skalierung (Ich programmiere auf Windows im iOS -Modus) funktioniert nicht. Ist das ein Fehler von Unity, oder hab ich irgendwas falsch eingestellt? Dann hat sich auch noch auf einmal mein Screen in die Länge gezogen😂😭 Kann mir da jmd helfen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.