2011-11-09 69 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

啊,這就解釋了!我能夠創建一個解決方案,不僅功能完美,而且更簡單一些。謝謝! –