IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Sérialisation de la classe Game


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Sérialisation de la classe Game
    Bonsoir,
    je rencontre actuellement une erreur lors de la sauvegarde de mon projet avec la classe BinaryFormatter.
    Je veux sauvegarder l'état de mon jeu, pour cela j'ai testé sur plusieurs objets de mon projet. Mais en prenant l'objet principal de ma classe principale Game1, j'obtiens un déclenchement d'exception :

    ""Le Type: Microsoft.Xna.Framework.Game' dans l'assembly 'Microsoft.Xna.Framework.Game, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d' n'est pas marqué comme sérialisable.""
    J'ai bien ajouté des attributs [serialisable] sur mes classes et [Nonserializable] sur mes textures et spritefont.

    Le problème viendrai de la classe Game mais je ne vois pas où ajouter l'attribut.

    Merci de me venir en aide,
    CDLT,
    maxous77.

  2. #2
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Ben, tu ajoutes l'attribut à ta classe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Serializable()]		
    public class Game{

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Justement voila ma classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     [Serializable()]
        public class Game1 : Microsoft.Xna.Framework.Game
        {
         ....
         }
    je veux sérialiser Game1 mais j'ai l'erreur précédente sur Game.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    oui donc tu rend ta classe Game1 sérialisable, mais Game (papa de Game1) ne l'est pas; il est la ton probleme.

    Je devinne que tu ne peux pas modifier Game, donc il te faut faire un wrapper, une classe qui n'herite pas de Game mais qui la contienne.

    Et à la mano, tu implémente tous les mechanismes pour construire un Game, juste avec des infos sérialisés. A mon avis ca doit représenter pas mal de travail.

    Quel est ton but en fait?

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Ah oui mais non, faut être plus finot que ca!
    C'est pas le jeu qu'il faut sérialiser mais l'état! Quand tu sauvegardes un jeu, y'a pas tout l'executable du jeu qu'est enregistré dans le fichier, juste l'endroit ou tu es, tes munitions, ton argent, les méchants, etc. C'est ces données qu'il faut sérialiser. Ensuite, il faut que tu sois capable de créer une nouvelle instance de Game1 en utilisant les paramètres.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses.

    Dans ma classe Game2 j'effectue la sérialisation de Game1 en faisant une instance de Game1 qui hérite aussi de Microsoft.Xna.Framework.Game.
    Après je suis bloqué à cette erreur et ne sait que faire.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    oui tu pourra aussi désérialiser Game5 qui désérialisera Game4 qui à son tour désérialisera Game3 et ainsi de suite jusqu'à Game qui te bloquera

    une classe que tu nomme Game, ca veut dire quoi pour toi?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Oui, bien justement je suis bloqué car j'ai des donnés sur l'état du jeu à sérialiser dans ma classe Game1 qui représente l'avancement de mon jeu héritant de Game et ensuite Game2 qui représente mon menu de jeu héritant elle aussi de Game. C'est dans cette précédente que j'appelle BinaryFormatter d'un objet de Game1.

    Et je ne comprend pas :
    Citation Envoyé par Nathanael Marchand Voir le message
    Ensuite, il faut que tu sois capable de créer une nouvelle instance de Game1 en utilisant les paramètres.
    En utilisant quels paramètres?

    Merci,
    CDLT,
    maxous77.

  9. #9
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par maxous77 Voir le message
    En utilisant quels paramètres?
    Ben ? Ceux que tu enregistres, munition, pv, argent etc.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Il faut alors que je fasse un wrapper?

  11. #11
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    si ton architecture de code est "propre", tu dois avoir tes données qui sont stockées quelque part (dans une classe, mini Base de données, etc...)

    Donc, normalement, l'état de ton jeu n'a rien à voir avec la classe Game du framework XNA...

    donc, pour moi, il te faut stocker toutes les données à sauvegarder dans une classe qui elle, sera sérialisable...

    C'est un peu comme si tu voulais sérialiser un UserControl plutot que de sérialiser les données qu'il traite...

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonsoir, merci de votre aide j'ai résolu mon problème et réalisé mon système de sauvegarde.

    Merci,
    CDLT,
    maxous77.

  13. #13
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    maxou,
    une des règles du forum (enfin, je crois) est que quand une réponse a une question a été trouvé (par le forum ou par le posteur initial), cette réponse soit postée pour que de futur recherche traitant du même sujet soit conscient et au courant d'une solution trouvée...

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Sérialisation d'une classe abstraite
    Par TheYggdrazil dans le forum C#
    Réponses: 2
    Dernier message: 19/09/2012, 17h50
  2. [Débutant] sérialisation de plusieurs classes [C#]
    Par x2thez dans le forum C#
    Réponses: 2
    Dernier message: 05/07/2012, 12h01
  3. Réponses: 0
    Dernier message: 26/07/2011, 23h52
  4. Sérialisation XML et classes externes
    Par darkfrag dans le forum C#
    Réponses: 0
    Dernier message: 24/04/2009, 15h55
  5. Pb Sérialisation d'une classe Héritée
    Par MaelstroeM dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/02/2009, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo