XNA:将Content.Load与Texture2D的子类一起使用

时间:2011-11-09 20:44:07

标签: c# xna subclass texture2d

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

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

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");

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

1 个答案:

答案 0 :(得分:3)

我认为你不能那样做。这就是原因。 Texture2D的大小是X字节大。 ScrollingBackgroundTexture的大小是X + Y大。 ScrollingBackgroundTexture不知道如何加载X大的内容,因为它是X + Y大。

您需要做的是为ScrollingBackgroundTexture创建自己的自定义内容类型。您可以在MSDN找到有关如何执行此操作的信息。

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