Tom12 Geschrieben 24. November 2018 Melden Share Geschrieben 24. November 2018 Hallo, ich habe 2 Scenen, Shop und Clicker, wenn ich vom Clicker Scene in den Shop gehe werden meine Points übernommen, allerdings wenn ich vom Shop in das Clicker Scene zurückwechsle setzt sich alles auf 0 zurück Clicker Script public float Bananen; public float BananenPerClick = 1; public UnityEngine.UI.Text BananenDisplay; public UnityEngine.UI.Text PerClickDisplay; // Use this for initialization void Start () { if (!PlayerPrefs.HasKey("Bananen")) { Bananen = PlayerPrefs.GetFloat("Bananen"); } if (!PlayerPrefs.HasKey("BananenPerClick")) { BananenPerClick = PlayerPrefs.GetFloat("BananenPerClick", 1); } public void Clicked() { Bananen = Bananen + BananenPerClick; PlayerPrefs.Save(); } public void OnDestroy() { PlayerPrefs.SetFloat("Bananen", Bananen); PlayerPrefs.SetFloat("BananenPerClick", BananenPerClick); } Shop Script void Awake(){ if (!PlayerPrefs.HasKey("Bananen")) { Bananen = PlayerPrefs.GetFloat("Bananen"); } if (!PlayerPrefs.HasKey("BananenPerClick")) { BananenPerClick = PlayerPrefs.GetFloat("BananenPerClick", 1); } if (!PlayerPrefs.HasKey("Item1")) { Bananen = PlayerPrefs.GetFloat("Item1"); } if (!PlayerPrefs.HasKey("PreisItem1")) { Bananen = PlayerPrefs.GetFloat("PreisItem1"); } } void Update(){ PlayerPrefs.Save(); } private void OnDestroy() { PlayerPrefs.SetFloat("Bananen", Bananen); PlayerPrefs.SetFloat("BananenPerClick", BananenPerClick); PlayerPrefs.SetFloat("Item1", Item1); PlayerPrefs.SetFloat("PreisItem1", PreisItem1); } Seht Ihr irgendwo einen Fehler? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 24. November 2018 Melden Share Geschrieben 24. November 2018 Ich habe jetzt echt nicht alle Dinge angesehen, aber gleich zu Beginn sagst du (frei übersetzt): Wenn ich in den Playerpres keinen Schlüssel mit Namen Bananen habe, dann nimm dir den Wert aus dem nicht vorhandenen Schlüssel Bananen und übergeb ihn der Variable Bananen. Ja und so machst du weiter. Überdenke das mal. Außerdem speicherst du bei jedem Frame die Playerprefs. Das ist nicht das, was du machen willst, denn du willst bestimmt nicht, dass die Festplatte 60 Mal pro sekunde irgendwelche Werte speichert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tom12 Geschrieben 2. Dezember 2018 Autor Melden Share Geschrieben 2. Dezember 2018 Am 24.11.2018 um 20:02 schrieb malzbie: Wenn ich in den Playerpres keinen Schlüssel mit Namen Bananen habe, dann nimm dir den Wert aus dem nicht vorhandenen Schlüssel Bananen und übergeb ihn der Variable Bananen. HasKey gibt laut UnityDoku einen True wert aus, also heißt es wenn Playerprefs einen Schlüssel Namens Bananen hat, lade ihn Oder verstehe ich dass komplett falsch? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 2. Dezember 2018 Melden Share Geschrieben 2. Dezember 2018 Das ist schon richtig. Es wird einfach in dem Bereich nach dem Schlüssel Banane gesucht und true ausgegeben, wenn er da ist oder eben false, wenn er nicht da ist. Aber in deiner Abfrage steht if (!PlayerPrefs.HasKey("Bananen")) Mit einem ! vorneweg. Und ! bedeutet nicht . Deine Bedingung ist also erfüllt wenn es den Key Bananen NICHT gibt. Und dann willst du den Bananenwert auslesen. Das ist aber doch nicht möglich! Denn wenn etwas nicht da ist, kannst du auch keinen Wert auslesen. Du hast deinen Code komplett verdreht. Denn in der Awake fragst du ständig ab, ob die Keys NICHT da sind. Und wenn die nicht da sind willst du etwas auslesen. Anstatt die Keys überhaupt ersteinmal zu erzeugen. Du hast den Code scheinbar irgendwie zusammengebastelt ohne genau zu verstehen wie man Playerprefs behandelt. Ich hatte vor 4 Jahren mal ein kleines Texttutorial dazu geschrieben. Das solltest du dir mal anschauen: 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.