Le sauvegarde de données dans Unity

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
MetalDiamond
Messages : 154
Inscription : 25 Juil 2013 22:34
Localisation : Silent Hill

Le sauvegarde de données dans Unity

Message par MetalDiamond » 11 Août 2014 15:52

Bonjour !

Alors pour le coup je ne viens pas vous demander comment faire mais plutôt la solution que vous adoptez majoritairement.

En cherchant comment sauvegarder les données d'une session de jeu à l'autre dans Unity je suis d'abord tombé sur les PlayerPrefs, déjà le nom du module me fait plus penser à la sauvegarde de petites données de config plutôt qu'une partie en elle même mais passons ^^. Le défaut que ça a l'air d'avoir (je me plante peut être) c'est que si le jeu est Update (dossier Data et .exe donc) il me semble que tout est perdu.

A partir de là je suis tombé sur un méthode (en C#) permettant de "sérialiser" un objet voire une liste d'objets pour les enregistrer sous la forme d'une chaîne de caractères dans les fameuses PlayerPrefs OU dans un fichier, plus intéressant donc dans la mesure ou le fichier peu survivre à une Update du jeu.

Humm, vous faites comment vous ? =3
My project : Nexus Sea

Image

error404
Messages : 160
Inscription : 13 Nov 2010 07:51
Contact :

Re: Le sauvegarde de données dans Unity

Message par error404 » 11 Août 2014 16:00

Salut,

Ca dépend de ce que tu as à sauvegarder. Si c'est un petit jeu mobile avec un score, un nombre de pièces et une caractéristique à enregistrer il faut passer par les playerprefs. C'est simple, rapide et portable.
Si tu as un gros jeu type RPG avec une barre de compétences, des caractéristiques sur ton personnage, 300 quêtes etc il faut passer par la sérialisation. Tu as sur le wiki un script sur la sérialisation xml des données.

Avatar de l’utilisateur
MetalDiamond
Messages : 154
Inscription : 25 Juil 2013 22:34
Localisation : Silent Hill

Re: Le sauvegarde de données dans Unity

Message par MetalDiamond » 11 Août 2014 16:07

Pour le coup c'est plus proche du RPG que du simple Highscore (dans ton example hein ^^) Donc j'irais voir ca, merci ^^
My project : Nexus Sea

Image

Avatar de l’utilisateur
LudlowFx
Messages : 1367
Inscription : 19 Sep 2013 05:50

Re: Le sauvegarde de données dans Unity

Message par LudlowFx » 11 Août 2014 16:12

Il commence à y avoir, avec le temps, de plus en plus de choix pour créer un système de sauvegarde.

En effet comme dit au-dessus, en général, il faut préférer PlayerPrefs pour de petite sauvegarde. Un temps, un score, un level mais dès lors où cela devient très complexe il vaut mieux passer par d'autres méthodes. Vis-à-vis de PlayerPrefs, il y a aussi PlayerPrefsX (voir Unify Community Wiki) qui étend un petit peu les possibilités de ce dernier.

Sinon après tu as le choix, Xml, Json ou encore Binary. Les trois sont bien. Json étant celui que j'ai le moins approfondi je laisse à qui connait le mieux en parler.

Saving and Loading Data : XmlSerializer (Xml)

Persistence - Saving and Loading Data (Binary)

Clé en main : Unity Serializer sur le site WhyDoIDoIt (Bien qu'attention à ce dernier je commence à avoir des doutes sur le maintien de l'asset par moment)

Encore une fois tout dépend de ce que tu auras à sauvegarder et surtout s'il y a beaucoup à sauvegarder.

Edit : Donc pas PlayerPrefs ce serait trop lourd et brouillon pour un système de sauvegarde type RPG.
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
stigma
Messages : 1400
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Le sauvegarde de données dans Unity

Message par stigma » 30 Mars 2015 17:13

Bonjour,

Est-ce que PlayerPrefs est adapté pour sauvegarder environ 200 variables, des vector3 mais principalement des int ?
Merci

Avatar de l’utilisateur
LudlowFx
Messages : 1367
Inscription : 19 Sep 2013 05:50

Re: Le sauvegarde de données dans Unity

Message par LudlowFx » 30 Mars 2015 18:16

Pas vraiment cherché dis donc...

Techniquement, je dirais qu'il n'y a pas de "réelle" limites. Mais passé un certains seuil il est bien plus pratique d'utiliser d'autres systèmes comme ceux que j'avais cités ci-dessus par exemple. En revanche, si c'est pour un support Webplayer, (ils le disent eux même) il y a une taille limite de 1 megabyte. Passé cette limite, les SetInt, SetFloat et SetString ne seront plus sauvegardés.

Google donne bien assez d'informations si on utilise les bon mots-clés... "PlayerPrefs Lmitations"
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
stigma
Messages : 1400
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Le sauvegarde de données dans Unity

Message par stigma » 30 Mars 2015 23:06

Alors c'est bon, mon projet n'est pas en webplayer (trop important). Merci

Avatar de l’utilisateur
krys64
Fondateur unity3d-france
Fondateur unity3d-france
Messages : 471
Inscription : 26 Nov 2009 00:08

Re: Le sauvegarde de données dans Unity

Message par krys64 » 06 Avr 2015 15:54

Perso, je n'utilise pas la serialiastion mais je gère les variables dans des xml que je sauve un repertoire plus haut que le le jeu

Avatar de l’utilisateur
stigma
Messages : 1400
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Le sauvegarde de données dans Unity

Message par stigma » 06 Avr 2015 18:07

Je n'avais pas pensé aux fichiers xml dans le cas de Unity. Merci !

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Le sauvegarde de données dans Unity

Message par F@B » 06 Avr 2015 18:37

bin c'est pareil? c'est de la sérialisation en XML??!! :shock: en JSON ou ce que tu veux.... :P

le problème du XML c'est que ce dernier est facilement éditable aussi, et donc le joueur triche! :lol:
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Répondre

Revenir vers « Scripting »