【问题标题】:XNA: Using Content.Load with a subclass of Texture2DXNA:将 Content.Load 与 Texture2D 的子类一起使用
【发布时间】:2011-11-10 07:47:07
【问题描述】:

所以我有一个名为 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");

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

【问题讨论】:

    标签: c# xna subclass texture2d


    【解决方案1】:

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

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

    如果我是你,我会改用设计更好的东西,喜欢composition over inheritance!这将带来额外的好处,即不会强迫您乱搞内容管道。

    【讨论】:

    • 啊,这就解释了!我能够创建一种解决方法,它不仅可以完美运行,而且更简单一些。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多