2011-07-18 140 views
0

我跟着這個教程 -我不明白這有什麼錯我傍XNA/C#代碼

我用3號法(多態性)到屏幕添加到我的比賽,現在我得到的錯誤。

它說,它「圖形組件未找到」

我註釋掉的代碼 -

 ////Vector2 ballPosition = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X + GraphicsDevice.Viewport.TitleSafeArea.Width/2, 
     //// GraphicsDevice.Viewport.TitleSafeArea.Y + GraphicsDevice.Viewport.TitleSafeArea.Height/2); 
     //ball.Initialize(Content.Load<Texture2D>("pongball2"), ballPosition); 


     ////Vector2 paddle1Position = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X + GraphicsDevice.Viewport.TitleSafeArea.Width/100 * 5, 
     //// GraphicsDevice.Viewport.TitleSafeArea.Y + GraphicsDevice.Viewport.TitleSafeArea.Height/2); 
     //paddle1.Initialize(Content.Load<Texture2D>("pongpaddle1"), paddle1Position); 

     ////Vector2 paddle2Position = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X + GraphicsDevice.Viewport.TitleSafeArea.Width/100 * 99, 
     //// GraphicsDevice.Viewport.TitleSafeArea.Y + GraphicsDevice.Viewport.TitleSafeArea.Height/2); 
     //paddle2.Initialize(Content.Load<Texture2D>("pongpaddle2"), paddle2Position); 


     //Score = Content.Load<SpriteFont>("score"); 

和它的作品,但隨後的第一個屏幕後,就不會前進到下一個。

是的,我被困在這裏。

+0

請刪除這些截圖,並將其文本內容添加到您的問題。與垃圾箱一樣。外部鏈接可能會下降,屏幕截圖和外部網頁中的文本無法輕鬆搜索,並且SO在您的問題中粘貼代碼方面提供了很好的支持。 –

+0

它是否支持我粘貼所有內容,因爲我不知道問題是否僅限於彈出錯誤消息的文件。如果這不是一個好主意,我應該粘貼什麼? – Slateboard

+0

試着寫出幾行代碼來重現問題。從一個新項目開始,並添加最少量的代碼,以獲得編譯時出錯的行。 –

回答

2

看看the constructor for ContentManager。它需要一個IServiceProvider參數。

內容管理器使用服務提供商獲取IGraphicsDeviceService。該服務只提供了一個GraphicsDevice對象。內容管理器需要圖形設備才能將紋理加載到所述設備上。

默認情況下GraphicsDeviceManager(這是一個IGraphicsDeviceService)將自己與Game.Services註冊(這是一個ISeviceProvider)當您在遊戲類的構造函數(這是從Game派生)創建它。由Game.Content提供

ContentManager利用這個相同的相同(Game.Services)服務提供商的。因此,在調用LoadContent時,它可以向服務提供商查詢圖形設備服務,從中獲取其圖形設備。

您得到的例外是因爲您正在使用的ContentManager無法獲取圖形設備(或可能是有效的圖形設備)。

而原因是Game類的極端誤用。你應該只有一個。你的Screen班是繼承Game,所以你有幾個!不要這樣做!

相關問題