Jump to content
Unity Insider Forum

Raumschifffarbe ändern(Scenenübergreifend, mehrmals)


lucprogrammiert

Recommended Posts

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:                        

1849103505_frbe_ndern.png.ba4161884dcd8926f1257be0cd2397ff.png

 

Und ein Foto der "Menu"- sowie "Game"-Scene1787930128_frbe_ndern_2.thumb.png.823509fd9bdababac04cb686ee84dfdf.png866754721_frbe_ndern_3.thumb.png.857c6601d395fb24e7db7237b84c7c34.png

 

Vielen Dank schonmal im Voraus 😁

MfG Luc

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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:

image.thumb.png.3ae563a6049aef98278495264f327e1a.png

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...