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

XNA/Monogame Discussion :

Multiple instances du ContentManager. Pourquoi ?


Sujet :

XNA/Monogame

  1. #1
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Multiple instances du ContentManager. Pourquoi ?
    Bonjour,

    Je suis un tuto youtube sur MonoGame et le programmeur créer à partir du ContentManager de base qui se situe dans le Game1.cs, de multiple instance de ContentManager dans d'autre classe à l'aide du ServicePovider du premier ContentManager.

    Premièrement je ne comprend pas pourquoi recréer une instance d'un objet auquel on a accès. Ainsi qu'utiliser le ServiceProvider et le Root du ContentManger de Game1.cs en paramètre de son instanciation.
    Deuxièmement qu'est ce que ce ServiceProvider, à quoi sert t'il, que représente t'il ?

    Merci, toute aide sera grandement apprécié

    (J'ai cherché sur le net avant de venir ici, je n'ai rien trouvé qui répondait précisément à mes questions)

  2. #2
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Re-bonjour,

    Alors pour comprendre ce qui se passe, il faut regarder comment ça marche le chargement de ressources dans Monogame. Quand on demande de charger une ressource, une texture par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Content.Load<Texture2D>("chemin/vers/ma/texture");
    le ContentManager va regarder si elle a déjà été chargé en mémoire. Si c'est le cas, on ne fait rien, on se contente de la renvoyer. Si elle n'est pas encore en mémoire, on la charge et on la renvoie.

    Maintenant, si tu regarde la classe ContentManager, tu verras qu'il y a une méthode pour charger une ressource (la méthode Load) mais aucune pour en décharger ! Et oui, le seul moyen de décharger des ressources dans Monogame c'est de détruire le ContentManager lui-même, en appelant Content.Dispose(), ce qui aura pour effet de décharger TOUTES les ressources chargées par cet objet.

    Comment je peux faire alors pour ne détruire qu'une partie des ressources que j'ai chargé dans le jeu ? Par exemple si je change de level dans mon jeu, je veux détruire les ressources qui sont utilisées par ce level, mais pas les autres dont j'ai toujours besoin. La réponse est qu'il faut utiliser plusieurs ContentManager différents. Dans l'exemple précédent, on va a voir un ContentManager général qui chargera au lancement du jeu toutes les ressources dont j'ai besoin du début à la fin, et un ContentManager par level, qui chargera seulement ce dont le level a besoin. Quand on changera de level, il suffira de détruire le ContentManager associé à ce level.

    Quant au IServiceProvider, je n'ai aucune idée de quelle est son utilisation et je n'ai jamais vu personne l'utiliser, mais comme il faut en fournir un pour créer un nouvel objet ContentManager, ben on prend celui du Content qui existe déjà

  3. #3
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    C'est bien ce que je pensais, Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/08/2009, 23h17
  2. [FastReport] FastServer - multiple instance ISAPI
    Par powerlog dans le forum FastReport
    Réponses: 1
    Dernier message: 21/04/2008, 21h33
  3. Multiples instances d'un JInternalFrame.
    Par pierreact dans le forum NetBeans
    Réponses: 3
    Dernier message: 23/12/2007, 17h32
  4. Multiple instance de service Windows
    Par zubov dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/01/2007, 10h22
  5. [C++] DLL Multiples instances
    Par ouquoi dans le forum C++
    Réponses: 2
    Dernier message: 18/07/2006, 17h25

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