C# Variable in anderem Skript aufrufen?
Bin gerade voll hängen geblieben. Wie kann ich nochmal in nem C# Skript über Unity eine public int in einem anderen Skript aufrufen ohne das sich die Skripts im gleichen GameObject befinden?
Würde gerne die FPS Zahl aus der Einstellungs-Szene Speichern und wenn das spiel in der Start-Szene startet direkt aufrufen. Wenn die ausgewählte FPS Anzahl aber nur im Skript von der Einstellungs-Szenen gespeichert wird, funktioniert das ja erst wenn die Einstellungs-Szene geöffnet wird.
3 Antworten
Für die Speicherung von Nutzereinstellungen kannst du PlayerPrefs nutzen.
Beispiel:
PlayerPrefs.SetInt("Some setting", 123);
PlayerPrefs.Save();
// somewhere else:
int defaultValue = 0;
int someSetting = PlayerPrefs.GetInt("Some setting", defaultValue);
Bezüglich der Kommunikation zwischen zwei Skripts ist die Zuweisung einer Referenz über den Inspektor eine einfache Methode.
Angenommen, du hast ein Skript A und ein Skript B. Skript A soll auf Skript B zugreifen. Dafür legst du in Skript A ein Feld mit dem Typ von Skript B an.
public ScriptB scriptB;
Im Editor wird daraufhin auf der Skriptkomponente ein Feld erscheinen, dem du via Drag & Drop das Skript / das GameObject mit dem Skript zuweisen kannst.
In der Klasse von der du auf das GameObject zugreifen willst definierst du eine Property die vom Typ des GameObjects ist auf das du zugreifen willst. Nun gehst du in den Unity-Editor wählst im Projekt-Explorer dort deine C# Datei aus und dort müsstest du der erstellten Property das GameObject zuweisen können.
Disclaimer: Ich hab lang nicht mehr mit Unity gearbeitet und das ist nur aus meinen Erinnerungen ausgegraben, hoffe aber es funktioniert trotzdem.
Habe so eben eine Lösung gefunden. Man muss zuerst die Zahl Speichern: PlayerPrefs.SetInt((Name), (Zahl));
PlayerPrefs.Save();
Dann muss man die Zahl in der gleichen oder in einem anderen Skript wieder herunterladen.
int (Name) = 0;
...
int (Name) = PlayerPrefs.GetInt("VorherigerName");
Somit wird die Zahl gespeichert bis sie neu Gespeichert wird. Gibt sicherlich auch andere möglichkeiten aber die hab ich herausgefunden