Найти тему
Xna 4, php,MonoGame, Статьи

Как быстро создать меню и кнопки в xna 4 для своей игры

Оглавление

В новых играх я часто использую один и тот же код для создания кнопок меню который очень простой и не требует поддержки классов и состоит из нескольких глобальных массивов. Вот простой пошаговый пример как сварганить данное меню у себя и увидеть результат его работы

Шаг 1:

Предполагая, что вы открыли/создали свой игровой проект XNA в Visual Studio, добавьте следующие глобальные переменные прямо под public class Game1 : Microsoft.Xna.Framework.Game строкой:

Шаг 2:

Добавьте в protected override void Initialize()метод следующее:

-2

Шаг 3:

Это добавление кнопок в нашу игру путо загрузки их через Обозреватель решений. Создадим новую папку knopkimenu и в нее загрузим наши изображения. Так как это всего лишь пример я остановился на 3х кнопках но вы можете под себя потом сделать гораздо больше и лучше если они понадобятся

Добавьте изображения кнопок в свой контент. Щелкните правой кнопкой мыши на “Content". Выберите "Добавить > Новая папка“, вызовите новую папку” knopkimenu ". Щелкните правой кнопкой мыши на “ knopkimenu“и выберите” Добавить > существующий элемент... " и добавьте свои изображения. Вот изображения, которые я буду использовать:

-3
-4

-5

Шаг 4:

Добавьте в protected override void LoadContent() метод следующее:

-6

Шаг 5:

Добавьте в protected override void Draw(GameTime gameTime) метод следующее:

-7

Теперь вы можете запустить свою игру и увидите где ваши кнопки будут отрисованы это правый верхний угол экрана. .

-8

Шаг 6:

Добавьте следующие 5 методов в свой основной игровой класс:

-9
-10
-11
-12

Целью этих методов является определение истинной области наведения на кнопку или щелчка: наведение или щелчок на текстуру кнопки, которая не попала на прозрачный пиксель. Затем выполните действий на кнопках, которые только что нажали это покрасить задний фон на разные цвета.

Шаг 7:

Добавьте следующий protected override void Update(GameTime gameTime) метод (убедитесь, что он находится выше строки: base.Update(gameTime);):

-13
-14

Теперь у вас должны быть рабочие кнопки!

Вот несколько снимков экрана:

-15
-16

Шаг 8 (Не обязательный)

Мне нравится поддерживать резервирование с помощью клавиатуры. Вот как я поддерживаю сочетания клавиш для своих кнопок:

Добавьте следующие глобальные переменные:

KeyboardState keyboard_state, last_keyboard_state;

-17

Наконец, добавьте вызов к этому методу в protected override void Update(GameTime gameTime) методе (убедитесь, что он находится выше строки: base.Update(gameTime);):

вы можете в методе draw добавить его под

handle_keyboard();

Теперь у вас можно выбрать эти 3 кнопки с помощью клавиатуры имена кнопок смотрим на изображении выше

Вот 8 простых шагов в достижении цели создания меню с выбором мышкой или клавиатуры. Вы под себя можете подстроить данный пример и применять его в Ваших будущих проектах.

Так же можете пожертвовать на чай автору и как следствие на написание новых статей по данной тематике - это дело добровольное.

Ссылка на архив данного примера плюс там есть класс для работы с 2д камерой и подгрузкой уровня игры

https://yadi.sk/d/3M83mt_fRTJQZw