我不明白我的Pong XNA/ c#代码出了什么问题
本文关键字:代码 什么 问题 明白 我的 Pong XNA | 更新日期: 2023-09-27 18:02:23
我遵循了这个教程-
我使用了第三种方法(多态)去添加屏幕到我的游戏中,现在我得到了错误。
显示"没有找到图形组件"
我注释掉这段代码-
////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");
它可以工作,但是在第一个屏幕之后,它不会继续到下一个屏幕
我被难住了
看一下ContentManager
的构造函数。它接受一个IServiceProvider
参数
内容管理器通过服务提供商获取IGraphicsDeviceService
。该服务只是提供一个GraphicsDevice
对象。内容管理器需要一个图形设备,以便将纹理加载到该设备上。
默认情况下,当你在你的游戏类(衍生自Game
)的构造函数中创建GraphicsDeviceManager
(这是一个IGraphicsDeviceService
)时,它将注册Game.Services
(这是一个ISeviceProvider
)。
Game.Content
提供的ContentManager
使用同一个(Game.Services
)服务提供者。因此,当LoadContent
被调用时,它可以向服务提供者查询图形设备服务,从中它可以获得图形设备。
您正在获得的异常是因为您正在使用的ContentManager
无法获得图形设备(或可能是有效的图形设备)。
原因是Game
类的严重滥用。你应该只有一个。您的Screen
类继承自Game
,因此您有几个!别这样!