Tiborius Geschrieben 4. April 2017 Melden Share Geschrieben 4. April 2017 Hi ich steh gerade richtig auf den schlauch. Ich habe einmal den Code für Audio Mute public int toggleSave = 1; public GameObject audioStart; public GameObject audioSpiel; public Toggle audioMute; public bool audioToggle = true; private void Start() { if (PlayerPrefs.HasKey("AudioSpeichern")) { toggleSave = PlayerPrefs.GetInt("AudioSpeichern"); } if ( toggleSave == 0) { audioMute.isOn = true; audioSpiel.SetActive(false); audioStart.SetActive(false); } else { audioMute.isOn = false; audioSpiel.SetActive(true); audioStart.SetActive(true); } } public void MuteAudio() { audioToggle = !audioToggle; if (audioToggle) { audioSpiel.SetActive(true); audioStart.SetActive(true); toggleSave = 1; } else { audioSpiel.SetActive(false); audioStart.SetActive(false); toggleSave = 0; } PlayerPrefs.SetInt("AudioSpeichern", toggleSave); } Bei dem geht auch alles wie es soll. Dann habe ich aber das gleiche noch mal für den Google Play Service und da speichert er den Bool und den PlayerPrefs nicht. Hier mal der Code void Start () { if (PlayerPrefs.HasKey("LoginSave")) { loginSave = PlayerPrefs.GetInt("LoginSave"); } if (loginSave == 1) { toplistButton.SetActive(true); erfolgeButton.SetActive(true); gpsLogin.isOn = true; } else { toplistButton.SetActive(false); erfolgeButton.SetActive(false); gpsLogin.isOn = false; } } public void GooglePlayService() { loginToggle = !loginToggle; if (!loginToggle) { Social.localUser.Authenticate((bool success) => { if(success) { toplistButton.SetActive(true); erfolgeButton.SetActive(true); textAnmeldeInfo.text = "Login success"; Invoke("TextLoeschen", 2); loginSave = 1; } else { loginToggle = !loginToggle; gpsLogin.isOn = false; textAnmeldeInfo.text = "Login fail"; Invoke("TextLoeschen", 2); loginSave = 0; } }); } else { PlayGamesPlatform.Instance.SignOut(); loginSave = 0; toplistButton.SetActive(false); erfolgeButton.SetActive(false); } PlayerPrefs.SetInt("LoginSave", loginSave); } Wenn ich das so schreibe dann speichert er den PlayerPrefs nicht und auch den Bool nicht. Wenn ich aber den mittleren Teil der anmeldung veränder dann geht es wieder. Social.localUser.Authenticate((bool success) => { toplistButton.SetActive(true); erfolgeButton.SetActive(true); textAnmeldeInfo.text = "Login success"; Invoke("TextLoeschen", 2); loginSave = 1; }); Meine fragen sind jetzt, 1. wie und wo speichert er den Bool 2. warum macht er es nur wenn ich den login ohne if und else schreibe? Ich hoffe ihr könnt mich erleuchten weil ich gerade richtig verzweifel. Danke Gruß Tibor Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. April 2017 Melden Share Geschrieben 4. April 2017 Das liegt daran, dass du da eine Methode übergibst. Der relevante Teil ist void Foo() { Blub(() => print("eins")); print("zwei"); } () => print("eins") ist eine Methode, die du als Parameter in Blub reinschiebst. Einige Methoden nehmen ints, andere strings, und Blub, wie auch Authenticate nehmen eine Methode. Diese Methode können sie dann aufrufen, wann immer sie wollen. Wenn Blub() eine leere Methode wäre, dann würde die übergebene Methode nie ausgeführt werden, die "eins" landet also nie in der Konsole. Authenticate führt die Methode früher oder später aus - und zwar, wenn das Authentifizieren abgeschlossen ist. Das dauert gerne mal etwas und deshalb läft der Rest des Programms weiter. In diesem Fall wird also print("zwei") ausgeführt, bevor Blub sich dazu entscheidet, die übergebene Methode auszuführen. "eins" landet so nach "zwei" in der Konsole. Und genau das ist dein Problem - du führst SetInt aus, bevor deine int-Variable gesetzt wird. 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.