2011-11-09 36 views
0

所以我有一个叫做ScrollingBackgroundTexture的Texture2D的子类。我想用它来加载纹理Content.Load<>,但我似乎无法让它工作。XNA:使用Content.Load与Texture2D的子类

下面是我的子类的代码(截至目前,它只是一个构造函数):

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

在这里,从被给我的麻烦我的主类的代码:

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

错误告诉我该文件包含一个Texture2D,但我试图将其加载为ScrollingBackgroundTexture

我也试过

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

但是,这只是给了我另一个错误。

回答

3

我不认为你可以做到这一点。这是为什么。 Texture2D的大小是X字节大。 ScrollingBackgroundTexture的大小是X + Y大。 ScrollingBackgroundTexture不知道如何加载X大的内容,因为它是X + Y大。

您需要做的是为ScrollingBackgroundTexture创建自己的自定义内容类型。你可以在MSDN找到如何做到这一点的信息。

如果我是你,虽然,我会切换到一些更好的设计,有利于composition over inheritance!这将会带来额外的好处,不会强迫你搞乱内容管道。

+0

啊,这就解释了!我能够创建一个解决方案,不仅功能完美,而且更简单一些。谢谢! –