Причина вашей ошибки в том, что вы объявили переменную для хранения 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; }
}
}
Так что это похоже на решение Итамара.