Aquana Geschrieben 9. September 2019 Melden Share Geschrieben 9. September 2019 Hallo, Ich versuch schon seit einigen Tagen Doubles zu speichern. Da es aber wie es scheint Playerprefs nur float, string und int speichert habe ich mir überlegt wie ich das umgehen kann. Also kam ich auf die Idee erhöhe das Double und wandele es in ein Int um. Um zu überprüfen ob es sich tatsächlich auch so speichert habe ich noch printbefehle hinzugegeben. Also nehmen wir mal an ich habe mit klicks meinene Integer auf 12 erhöht und wechsle die Szene. Dort Ist auf einem anderen Objekt das gleiche Script. Jetzt wird mir immer noch 12als der Integer angezeigt über print. Außerdem habe ich in der Awake-methode dann die Doubles die sich nun ja nicht speichern lassen auf die Anzahl des Intergers gesetzt.(double) Number = (int)convertedNumber. Jetzt müsste Double doch eigentlich genauso groß sein wie der Integer oder nicht? Doch der Printbefehl gibt mir trotzdem aus das ich bei meinem Double nur 0 habe. Wenn ich dann zurück in die Anfansgszene wechsle und erneut das eigentlich gespeicherte hoch zählen will fängt alles dann deswegen wieder bei 1 an zu zählen. Kann mir jemand sagen warum mein Double nicht der Anzahl des Integers entspricht obwohl ich das ganze eigentlich sogar in der Awake-methode auf die gleiche Anzahl setzte? public Text doubleText; double Number ; int convertedNumber; void Awake() { //umwandeln beim Szenenwechsel von Double=0 auf Double=convertedNumber Number = convertedNumber; //speichern des Münzentextes doubleText.text = "Münzen= " + PlayerPrefs.GetInt("Doublecoins1").ToString(); //speichern der Münzenanzahl convertedNumber = PlayerPrefs.GetInt("DoublecoinsAnzahl1"); } void OnMouseDown() { //ein Double in ein Int umwandeln Number += 1; convertedNumber += 1; convertedNumber = Convert.ToInt32(Number); //speichern von Text PlayerPrefs.SetInt("Doublecoins1", convertedNumber); //speichern der tatsächlichen Anzahl PlayerPrefs.SetInt("DoublecoinsAnzahl1", convertedNumber); doubleText.text = "Münzen= " + PlayerPrefs.GetInt("Doublecoins1").ToString(); } void FixedUpdate() { print("convertedNumber"+convertedNumber); print("Number"+Number); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. September 2019 Melden Share Geschrieben 9. September 2019 Warum machste dir den Stress, speichere die Zahl doch einfach als String ab. Ich meine, man könnte auch zwei floats/ints benutzen und da ein bisschen Bits shiften, aber warum sich den ärger machen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aquana Geschrieben 10. September 2019 Autor Melden Share Geschrieben 10. September 2019 Danke Sascha für deine Hilfe. Jetzt habe ich aber letztendlich gesehen warum meine Methode nicht funktionierte. Noch bevor ich die gespeicherten "convertedNumber" aufgerufen habe, setzte ich bereits Number = convertedNumber. Da war es natürlich noch auf 0. Ich musste Number=convertedNumber nur ganz unten in Awake hinsetzten. Schon lief alles so wie ich es mir vorstellte mit nur einer kleinen Veränderung 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.