我有一个GameObject
类(我自己制作),我想创建(例如)包含屏幕最大宽度的GraphicsWidth
变量。这意味着我需要创建一个GraphicsDeviceManager
实例。 (对?)。这就是我所做的:
protected GraphicsDeviceManager GM;
public int GraphicsWidth
{
get
{
return GM.GraphicsDevice.Viewport.TitleSafeArea.Width;
}
}
它说我需要使用“new”(初始化对象)。我怎么能从我的GameObject类中做到这一点?
编辑:拜托,有人可以尝试帮忙吗?
答案 0 :(得分:1)
您的错误原因是您声明了一个变量来保存GraphicsDeviceManager
,但您还没有初始化它。您需要新建变量:
protected GraphicsDeviceManager GM = new GraphicsDeviceManager();
或者您需要将GraphicsDeviceManager.GraphicsDevice
声明为静态并进行更改:
return GraphicsDeviceManager.GraphicsDevice.Viewport.TitleSafeArea.Width;
如上所述,你有很多选择。在不了解更多上下文的情况下,我更倾向于为GraphicsDeviceManager
的单个实例使用单个静态容器,而不会使GraphicsDeviceManager
成为静态。喜欢这个
public static class MyGraphics{
public static readonly GraphicsDeviceManager DeviceManager = new GraphicsDeviceManager();
public int ScreenWidth{
get{ return DeviceManager.Viewport.TitleSafeArea.Width; }
}
}
所以它与Itamar的解决方案类似。
答案 1 :(得分:0)
我不明白为什么你会在每个GameObject实例中创建另一个GraphicsDeviceManager。
您需要做的就是调用GraphicsDeviceManager.PreferredBackBufferWidth()
函数。如果您需要从GameObject访问它,您可以声明一个静态GraphicsDeviceManager。这就是我通常做的事情。
也许我误解了你的问题。如果是这样,请澄清你想要完成的任务。