В новых играх я часто использую один и тот же код для создания кнопок меню который очень простой и не требует поддержки классов и состоит из нескольких глобальных массивов. Вот простой пошаговый пример как сварганить данное меню у себя и увидеть результат его работы
Шаг 1:
Предполагая, что вы открыли/создали свой игровой проект XNA в Visual Studio, добавьте следующие глобальные переменные прямо под public class Game1 : Microsoft.Xna.Framework.Game строкой:
Шаг 2:
Добавьте в protected override void Initialize()метод следующее:
Шаг 3:
Это добавление кнопок в нашу игру путо загрузки их через Обозреватель решений. Создадим новую папку knopkimenu и в нее загрузим наши изображения. Так как это всего лишь пример я остановился на 3х кнопках но вы можете под себя потом сделать гораздо больше и лучше если они понадобятся
Добавьте изображения кнопок в свой контент. Щелкните правой кнопкой мыши на “Content". Выберите "Добавить > Новая папка“, вызовите новую папку” knopkimenu ". Щелкните правой кнопкой мыши на “ knopkimenu“и выберите” Добавить > существующий элемент... " и добавьте свои изображения. Вот изображения, которые я буду использовать:
Шаг 4:
Добавьте в protected override void LoadContent() метод следующее:
Шаг 5:
Добавьте в protected override void Draw(GameTime gameTime) метод следующее:
Теперь вы можете запустить свою игру и увидите где ваши кнопки будут отрисованы это правый верхний угол экрана. .
Шаг 6:
Добавьте следующие 5 методов в свой основной игровой класс:
Целью этих методов является определение истинной области наведения на кнопку или щелчка: наведение или щелчок на текстуру кнопки, которая не попала на прозрачный пиксель. Затем выполните действий на кнопках, которые только что нажали это покрасить задний фон на разные цвета.
Шаг 7:
Добавьте следующий protected override void Update(GameTime gameTime) метод (убедитесь, что он находится выше строки: base.Update(gameTime);):
Теперь у вас должны быть рабочие кнопки!
Вот несколько снимков экрана:
Шаг 8 (Не обязательный)
Мне нравится поддерживать резервирование с помощью клавиатуры. Вот как я поддерживаю сочетания клавиш для своих кнопок:
Добавьте следующие глобальные переменные:
KeyboardState keyboard_state, last_keyboard_state;
Наконец, добавьте вызов к этому методу в protected override void Update(GameTime gameTime) методе (убедитесь, что он находится выше строки: base.Update(gameTime);):
вы можете в методе draw добавить его под
handle_keyboard();
Теперь у вас можно выбрать эти 3 кнопки с помощью клавиатуры имена кнопок смотрим на изображении выше
Вот 8 простых шагов в достижении цели создания меню с выбором мышкой или клавиатуры. Вы под себя можете подстроить данный пример и применять его в Ваших будущих проектах.
Так же можете пожертвовать на чай автору и как следствие на написание новых статей по данной тематике - это дело добровольное.
Ссылка на архив данного примера плюс там есть класс для работы с 2д камерой и подгрузкой уровня игры
https://yadi.sk/d/3M83mt_fRTJQZw