2011-11-09 3 views
0

J'ai donc une sous-classe de Texture2D appelée ScrollingBackgroundTexture. Je voudrais l'utiliser pour charger une texture avec Content.Load<>, mais je n'arrive pas à le faire fonctionner.XNA: Utilisation de Content.Load avec une sous-classe de Texture2D

Voici le code dans ma sous-classe (à partir de maintenant, il est juste un constructeur):

class ScrollingBackgroundTexture : Texture2D { 
    public ScrollingBackgroundTexture(GraphicsDevice graphicsDevice, int width, int height) : base(graphicsDevice, width, height) { } 
} 

Et voici le code de ma classe principale qui me donne du mal:

test = Content.Load<ScrollingBackgroundTexture>("near stars"); 

L'erreur me dit que le fichier contient un Texture2D, mais j'essaye de le charger comme ScrollingBackgroundTexture.

J'ai aussi essayé

test = (ScrollingBackgroundTexture)Content.Load<Texture2D>("near stars"); 

Mais que me donne une autre erreur.

Répondre

3

Je ne pense pas que vous puissiez le faire. Voici pourquoi. La taille d'un Texture2D est de X octets. La taille d'un ScrollingBackgroundTexture est X + Y gros. Le ScrollingBackgroundTexture ne sait pas comment charger du contenu qui est X grand parce qu'il est X + Y gros.

Ce que vous devez faire est de créer votre propre type de contenu personnalisé pour ScrollingBackgroundTexture. Vous pouvez trouver des informations sur la façon de le faire au MSDN.

Si j'étais vous bien, je passerais à quelque chose avec un design un peu mieux qui favorise composition over inheritance! Cela aura l'avantage supplémentaire de ne pas vous forcer à déranger avec le pipeline de contenu.

+0

Ah, ça l'explique! J'ai été capable de créer une solution de contournement qui non seulement fonctionne parfaitement, mais qui est aussi un peu plus simple. Je vous remercie! –

Questions connexes