C# 无法从其他类调用XNA GraphicsDevice

C# 无法从其他类调用XNA GraphicsDevice,c#,xna,C#,Xna,各位!!我正在XNA/C中开发一个platformer,但我在图形设备方面遇到了问题。我听说XNA在很多方法中都需要GraphicsDevices,但它只能在LoadContent()之后调用,这对我来说是个问题,因为我的项目中将有很多类。我怎样才能得到这个图形设备 提前谢谢 编辑:下面是一个代码示例:在游戏类中,添加GraphicsDeviceManager变量,如下所示: GraphicsDeviceManager graphics; 现在,在游戏构造函数中,按如下方式初始化它: grap

各位!!我正在XNA/C中开发一个platformer,但我在图形设备方面遇到了问题。我听说XNA在很多方法中都需要GraphicsDevices,但它只能在LoadContent()之后调用,这对我来说是个问题,因为我的项目中将有很多类。我怎样才能得到这个图形设备

提前谢谢


编辑:下面是一个代码示例:

在游戏类中,添加GraphicsDeviceManager变量,如下所示:

GraphicsDeviceManager graphics;
现在,在游戏构造函数中,按如下方式初始化它:

graphics = new GraphicsDeviceManager(this);

在游戏构造函数之后,在Initialize和LoadContent方法中,应该加载graphics.GraphicsDevice变量。您可以将其传递到方法中并为其设置,如DepthStencilState等。

通过任何其他类的构造函数传递对游戏对象的引用一直是我首选的方法。这样我就可以打电话了

this.Texture = game.Content.Load<Texture2d>("Fred");
this.Texture=game.Content.Load(“Fred”);

例如。

您可以在需要帮助的地方发布特定代码吗?拥有许多类应该不是问题,它们已经在那里定义好了。不过,我的类中没有游戏类的范围。我需要从它继承还是实例化它?编辑:这里是我的错误:“SMLimitless.Main.graphics”由于其保护级别而不可访问。你真的应该从游戏类继承并在其中执行所有需要的操作(在最高级别)。这是XNA的正常工作方式。但是,如果要在其他地方访问该图形对象,请将其公开。要做到这一点,您仍然需要从游戏中继承,并在其中创建一个公共GraphicsDeviceManager变量。比如“使用SMLimitless.Game;”?我想是的。我喜欢在游戏类中有一个具有更新和绘制方法的接口。Game类只是在它自己的同名方法中调用该接口上的那些方法。你所能做的就是将你想要的任何东西“插入”到游戏中,无论是菜单还是关卡。然后在这些项目的构造器中,只要有一个游戏对象并保留对它的私有引用。从那时起,您可以从关卡/菜单中访问游戏对象及其任何已公开的属性,如内容等。