J'ai trouvé la solution ! Et ce n'est pas du tout ce qu'on croyait ! Mais je pense que vous auriez eu du mal à m'aider, car je n'ai pas jugé nécessaire de vous envoyer le script qui récupérait le PlayerPrefs.
Mon script avant:
Code : Tout sélectionner
static var Eau : int = 0;
function Start () {
Eau = PlayerPrefs.GetInt("EAU");
}
function Update () {
}
function OnGUI () {
GUI.skin= LabelEau;
GUI.color=Color.white;
GUI.Label(new Rect(60,15,300,50), "" +Eau);
}
function AJOUTER_EAU () {
Eau += 1;
}
La partie qui bloque est en haut. En fait (et ça m'étonnait aussi), le problème n'est pas de mon appareil. Je pense (dites moi si je me trompe) avoir compris le principe du Main(), Start() et Awake() (Même si en l'occurence il n'y a pas d'Awake()). En fait si j'en ai bien déduit de tous mes essais, la fonction Main() ne se définit pas, et se joue lors du lancement du script (donc de l'application), la fonction Start() se joue lors du lancement de la scène, et Awake() se joue avant Main (Enfin je crois, ou alors c'est juste avant Start() ?). En tous cas, le problème était que j'avais un Menu qui se lançait au début du jeu (J'ai mis une image du Menu. Dans ce menu on définissait un pseudo pour le joueur, et j'avais donc mis un bouton pour sauvegarder ce pseudo. Sauf que j'utilisais le même script et la même fonction pour sauvegarder toutes les données (ainsi que ma variable "Eau").
Donc pour résumer, au lancement de l'application:
1. La fonction Main s'effectue, et définit la variable Eau à 0
2. Je sauvegarde cette variable dans les PlayerPrefs dans le menu, avant de récupérer cette variable dans les PlayerPrefs, justement
3. J'ouvre ma scène de jeu, la fonction Start() s'exécute et récupère les PlayerPrefs, mais celles-ci ont été mises à 0 par la fonction Main() lors du lancement du jeu
4. Résultat, mon Eau est revenue à 0. Mais lorsque je change de scène la fonction Main() ne se ré-exécute pas, donc si j'ai augmenté la variable, c'est la bonne valeur qui est enregistrée dans les PlayerPrefs.
Conclusion:
On a cherché trop loin, voilà le bon script:
Code : Tout sélectionner
#pragma strict
var LabelEau: GUISkin;
static var Eau : int;
function Start () {
if(PlayerPrefs.HasKey("EAU")==false){
Eau = 0;
}else{
Eau = PlayerPrefs.GetInt("EAU");
}
}
function Update () {
}
function OnGUI () {
GUI.skin= LabelEau;
GUI.color=Color.white;
GUI.Label(new Rect(60,15,300,50), "" +Eau);
}
function AJOUTER_EAU () {
Eau += 1;
}
Je pense que j'ai compris mon erreur, car sinon je ne vois pas pourquoi la variable du pseudo aurait été sauvegardée, elle...
Merci à tous ceux qui m'ont aidé en tous cas !
P.S: si j'ai fait toutes ces explications, c'est que j'ai vu que ce sujet avait intéressé pas mal de monde, donc j'espère que j'en aiderai quelques uns ^^ Hésitez pas à me le faire savoir ça me fait plaisir