Jump to content
Unity Insider Forum
Sign in to follow this  
Aquana

Doubles und Playerprefs

Recommended Posts

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);
      
    }
}

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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 :D

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...