[RESOLU] Questions pour les playerPrefs

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

[RESOLU] Questions pour les playerPrefs

Message par GameWorldStudio » 08 Août 2018 21:39

Bonsoir, cela fait quelque mois que je développe mon tout premier jeu et je suis arrivé au système de sauvegarde. Je vous explique... Le joueur choisi une arme dans le niveau 0, le jeu sauvegarde le choix de l'arme et une fois dans le jeu (niveau 1) le jeu regarde quel arme le joueur a choisi pour lui la donner (en gros) mais le tout en deux scripts différent, soit :
Niveau0 - Script1 : "PlayerPrefs.SetInt("...", ...);"
Niveau1 - Script2 : "PlayerPrefs.GetInt("...");"

j'ai essayer ce système mais cela ne marche pas... Donc je voulais savoir si c'est possible et si dans les deux cas (possible ou non) la démarche à suivre pour que le système soit opérationnelle ^^ Merci !!

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Questions pour les playerPrefs

Message par Max » 08 Août 2018 22:47

Bonsoir,
GameWorldStudio a écrit :
08 Août 2018 21:39
Niveau0 - Script1 : "PlayerPrefs.SetInt("...", ...);"
Niveau1 - Script2 : "PlayerPrefs.GetInt("...");"

j'ai essayer ce système mais cela ne marche pas...
Tu as du louper un truc je pense alors.
Car normalement cela fonctionne très bien.
Si tu fait un PlayerPrefs.SetInt("Element", 22); par exemple, puis quelque soit le level
un int v = PlayerPrefs.GetInt("Element"); tu ne devrais pas avoir de soucis à récupérer ta valeur. C'est bien le but d'ailleurs du système des PlayerPrefs.
Juste faire attention au nom de la clé qui doit être parfaitement identique (respect majuscules/minuscules, etc..)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: Questions pour les playerPrefs

Message par Liven » 09 Août 2018 00:44

Fait gaffe quand même à ce que tu met de les playerPrefs, c'est pas du tout sécure (et pas super opti il me semble) car les joueurs peuvent le modifier sans problème.
Mais après tout si la sécu n'est pas ta priorité (pas de multi notamment) ça reste le plus simple.

Sinon faudrait que tu passe par une Serialization, si tu maitrise pas et que tu veux te lancer la dedans, je peux te balancer un exemple vite fait.

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Questions pour les playerPrefs

Message par GameWorldStudio » 09 Août 2018 09:36

TUTO UNITY FR nous a montré une Asset permettant de crypter les données PlayerPrefs donc ne vous en faite pas pour ça ^^ Ensuite je vais revoir mon code et voir ce qui ne vas pas vu que du coup mon système doit marché... Merci pour votre aide je vous recontacte dès qu'il y a du nouveau !

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Questions pour les playerPrefs

Message par boubouk50 » 09 Août 2018 11:49

As-tu essayer de faire un PlayerPrefs.Save () après le PlayerPrefs.SetInt ()?
Il me semble qu'il est important sur certaines plateformes.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Questions pour les playerPrefs

Message par GameWorldStudio » 10 Août 2018 09:28

Je ne connaissais pas cette notion de PlayerPrefs, je vais l'utiliser et je vous recontacterai pour vous dire si, avec cette notion, le système marche

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Questions pour les playerPrefs

Message par GameWorldStudio » 10 Août 2018 10:07

Alors je viens de rajouter la ligne sur mon code, mais unity me met cette erreur :
"Assets/OnEquiped.js(89,33): BCE0017: The best overload for the method 'UnityEngine.PlayerPrefs.Save()' is not compatible with the argument list '(String, int)'."

Des idées ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Questions pour les playerPrefs

Message par boubouk50 » 10 Août 2018 10:22

Poste ta ligne de code stp. On est pas devin.
tu es sensé mettre

Code : Tout sélectionner

PlayerPrefs.Save();
une fois terminés tes PlayerPrefs.SetInt (...);
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

GameWorldStudio
Messages : 65
Inscription : 29 Août 2017 10:34

Re: Questions pour les playerPrefs

Message par GameWorldStudio » 10 Août 2018 22:01

J'ai réflechi et j'ai un peu changer le système pour qu'il soit, je pense, plus facile à mettre en place. Donc voyez la chose suivante. Dans une scène 0, et avec ce script qui est attaché à un bouton, le joueur choisit une arme, arme qui est dans le script à l'état de boolean (ici j'ai mis 1 ou 0 pour sauvegarder dans les playerprefs) soit :

"var usp : int = 0;"

Lorsque le joueurs clique sur le bouton (le bouton représente l'arme voulu en quelque sorte), le jeu sauvegarde le choix. (il y a 20 arme, donc 20 booleans et j'indique au script de quel arme il s'agit avec le système 0 et 1, 1 lorsque le bouton représente l'arme) donc :

"PlayerPrefs.SetInt("USP1", usp);
PlayerPrefs.Save();
Debug.Log("usp choisi");"

Ensuite lorsque le joueur rentre dans le jeu, scène 1, le script, qui est assigné au FPSController s'active et dans la fonction Start, le script cherche quel arme a été choisi (en gros il regarde quel booleans est égal à 1) donc dans ce cas la c'est la boolean "usp" qui doit être égal à 1 soit :

"PlayerPrefs.GetInt("USP1", usp);"

Mais lorsque je test ceci, toute les valeur du script attacher au FPScontroller restent a 0, soit la valeur 1 sauvegardé dans la scène précédente ne se met pas dans la scène suivante...

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Questions pour les playerPrefs

Message par Max » 10 Août 2018 22:40

Bonsoir,
GameWorldStudio a écrit :
10 Août 2018 22:01
le script cherche quel arme a été choisi (en gros il regarde quel booleans est égal à 1) donc dans ce cas la c'est la boolean "usp" qui doit être égal à 1 soit :
"PlayerPrefs.GetInt("USP1", usp);"
ta syntaxe n'est pas la bonne.
si tu souhaites récupérer dans 'usp' la valeur, tu dois écrire (cf la doc)

Code : Tout sélectionner

var usp : int = PlayerPrefs.GetInt("USP1");
Si tu passes une variable en second paramètre, c'est considéré comme valeur par défaut si la clé n'existe pas.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « Scripting »