Как я могу улучшить метод переключения на полноэкранный режим в моноагме?

Для моей моноигры C# я создал кнопки в меню параметров, чтобы игроку было легко переключаться между оконным и полноэкранным режимами. Моя функция оконного экрана работает отлично.

public static void WindowScreen(InputManager input)
{
 mGraphics.PreferredBackBufferWidth = 1000;
 mGraphics.PreferredBackBufferHeight = 600;
 mGraphics.IsFullScreen = false;
 mGraphics.ApplyChanges();
 sScreenList = new List<IScreen> {new MainMenuScreen(input)};
 sScreenList[0].LoadAssets();
}

Но как я могу создать то же самое в полноэкранном режиме? Я сделал вот это:

public static void FullScreen(InputManager input)
{
    mGraphics.ToggleFullScreen();
    mGraphics.IsFullScreen = true;
    mGraphics.ApplyChanges();
    sScreenList = new List<IScreen> {new MainMenuScreen(input)};
    sScreenList[0].LoadAssets();
}

Но у меня проблемы с ToggleFullScreen(); Когда я запускаю свою игру в полноэкранном режиме, она отлично работает, чтобы переключиться на экран окна. После возврата к полноразмерному формату все искажается. Когда я закрываю игру (мой saveloadmanager запоминает размер экрана) и снова запускаю игру в полноэкранном режиме, ничего не искажается. Когда я запускаю игру в размере окна и хочу изменить ее в полноэкранном режиме, окно становится черным, и мне приходится ждать долго. После этого окно будет искажено в полноэкранном режиме.

Из-за этого я попытался создать полноэкранный режим без ToggleFullScreen(); Это мой новый код:

public static void FullScreen(InputManager input)
{
    mGraphics.PreferredBackBufferWidth = GraphicsDevice.DisplayMode.Width;
    mGraphics.PreferredBackBufferHeight = GraphicsDevice.DisplayMode.Height;
    mGraphics.IsFullScreen = true;
    mGraphics.ApplyChanges();
    sScreenList = new List<IScreen> {new MainMenuScreen(input)};
    sScreenList[0].LoadAssets();
}

Теперь я получаю "CS0120 C# Ссылка на объект требуется для нестатического поля, метода или свойства" для первых строк. Мой метод FullScreen должен быть статическим, иначе я не смог бы работать с ним во многих других моих методах.

Я уже искал другие вопросы, но не могу найти ответа на свои две проблемы. Кто-нибудь знает, как исправить мою первую или вторую попытку? Или есть у кого-нибудь получше, как сделать полноэкранный метод?

0 ответов

Другие вопросы по тегам