2011-07-18 97 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,所以你有几个!不要这样做!

相关问题