Меню для игры [Unity Project]

Любой нормальной игре нужно меню, хотя бы простое должно быть. Менюшки делятся на два вида, экран приветствия и внутриигровое меню. Иногда их делают одинаковыми, но на наш взгляд это не совсем удачное решение. В процессе игры, главная задача меню, обеспечить быстрый доступ к основным настройкам, без нагромождения графических украшений и прочей мишуры. В общем, NULLcode Studio представляет Вам проект меню, которое предназначено для использования как внутриигровое, то есть, при вызове ставит игровой процесс на паузу и дает возможность настроить: аудио, видео, клавиши управления и прочее.


Возможности меню:
  • Сохранение настроек в файл.
  • Проверка файла сохранения на наличие ошибок.
  • Настройки разрешения экрана.
  • Настройки качества изображения.
  • Настройки режима экрана: Полноэкранный / В окне.
  • Изменение клавиш управления.
При первом запуске, скрипт меню создает файл, формата XML с настройками по умолчанию, по адресу Application.dataPath. Если скрипт не сможет прочитать файл сохранения или обнаружит иную ошибку, то будет показано соответствующее сообщение, затем, файл будет перезаписан с дефолтными настройками. Список разрешений экрана включает все доступные разрешения монитора (в полноэкранном режиме). Тестировалось на платформе Windows.

Примечание:
В редакторе Unity список разрешений экрана недоступен.

Использование:
Перетащите на сцену префаб GameMenu_UI, а также в сцене должен быть объект EventSystem, если его нет, то добавьте GameObject -> UI.

Доступные переменные:

public static bool _menu;
public static float soundValue;
public static float musicValue;
public static KeyCode[] keys;

_menu - если меню активно, то true.
soundValue, musicValue - для звуков и музыки соответственно.
keys - массив клавиш управления.

Пример. Допустим надо, чтобы персонаж двигался вперед, какой элемент массива использовать? Считать надо сверху вниз в меню настроек управления, как и в обычном массиве.

Меню для игры [Unity Project]

Смотрим, где у нас клавиша «Вперед», счет от нуля. Получается вот так:

if(Input.GetKey(GameMenu.keys[2]))
{
	// Что-то...
}

Всё достаточно просто.

Можно добавить больше клавиш управления или убрать лишние, для этого нужно отредактировать визуальную часть меню и массив defaultKeys. Вообще графически менюшка выглядит просто, но изменить всё это, под свою игру, не составит особого труда.

Скачать проект Unity 5.0:

Внимание! Посетители, находящиеся в группе Гости, не могут скачивать файлы.

Комментариев 30

Офлайн
Light 21 июля 2017
Crysis001, такое будет, в свое время.
Офлайн
Crysis001 20 июля 2017
Подскажите как сделать при нажатии на то место где хочу построить башню, появлялись кнопки вокруг башни(постройка, модификация и т.д.) ? Вот что то вроде этого:
https://m.vk.com/photos139165472?z=photo139165472_456239141%2Fphotos139165472?
Было бы очень хорошо если бы вы реализовали этот урок.
Офлайн
Stason4ikRU 11 июля 2017
Light,
Спасибо
Офлайн
Light 11 июля 2017
Stason4ikRU,
float h = Input.GetAxis("Horizontal"); надо заменить на float h = 0;
И сразу после поставить
if (Input.GetKey(GameMenu.keys[0]))
{
h = -1;
}
else if (Input.GetKey(GameMenu.keys[1]))
{
h = 1;
}
Офлайн
Stason4ikRU 11 июля 2017
например вот ваш скрипт:

так ?
Офлайн
Light 9 июля 2017
Stason4ikRU, сделай отдельную переменную типа float, а потом просто меняй ее значение:

if(Input.GetKey(GameMenu.keys[0]))
{
	// переменная = -1;
}
else if(Input.GetKey(GameMenu.keys[1]))
{
	// переменная = 1;
}

И эту переменную поставь вместо Input.GetAxis("Horizontal")
Офлайн
Stason4ikRU 8 июля 2017
если у меня персонаж движется по вектору :

как поменять управление что бы работало назначение клавиш.
Офлайн
Light 8 июля 2017
Stason4ikRU, через меню юнити, добавить как дочерний объект меню и всё.
Офлайн
Stason4ikRU 7 июля 2017
Как добавить свою кнопку например Dropdawn и что бы она исчезала вместе с меню ?
Офлайн
Light 19 мая 2017
Mari4og, особых сложностей в этом нет, кое-где код подправить и объединить оба меню в одну конструкцию.
Офлайн
Mari4og 18 мая 2017
Light, подскажите, насколько трудно интегрировать ваше "Меню выбора сцены с сохранением" в это меню?. Например, вместо кнопки "Авторы", кнопка "Загрузить"?
Офлайн
Mari4og 18 мая 2017
Stason4ikRU, "в сцене должен быть объект EventSystem, если его нет, то добавьте GameObject -> UI" - проверь, вдруг забыл добавить.
Офлайн
Stason4ikRU 18 мая 2017
Если нажать на Esc>управление и нажать на Esc то вызовится ещё 1 меню
Офлайн
Light 12 мая 2017
Stason4ikRU, дочерние объекты меню отключены, их просто нужно сделать активными.
Офлайн
Stason4ikRU 12 мая 2017
Stason4ikRU,
В Unity вообще не отображается меню.А так есть.
Офлайн
Stason4ikRU 12 мая 2017
Нету меню Unity 5.6
Офлайн
Light 20 февраля 2017
CherkProB, видимо что-то в твоем проекте, скинь архив файлов проекта, посмотрим.
Офлайн
CherkProB 19 февраля 2017
Light,
В меню (Когда нажимаю esc)
Офлайн
Light 19 февраля 2017
CherkProB, какие кнопки?
Офлайн
CherkProB 19 февраля 2017
Если добавляю меня в сцену с fpc , то кнопки не нажимаются. Почему это происходит ? И как это исправит ?
Офлайн
Light 24 января 2017
Лёша Погодин, для этого есть отельные переменные, о которых написано в статье.
Офлайн
как сделать чтобы меню звук убавить и прибавить и музыку в игре
Офлайн
Light 24 января 2017
Лёша Погодин, обнови юнити, попробуй реимпортировать проект, т.е. удалить в проекте папку Library.
Офлайн
скажите как исправить ошибку в меню я с buid захожу готовая игру выдоет Failed to load PlayerSettings (internal index #0).
Most likely data file is corrupted, or built with mismatching
editor and platform support versions.
Офлайн
Light 17 июня 2016
aaadrey, переменная buttonMenu2 не назначена. Сделай ее публичной и назначь вручную, или измени способ определения переменой.
Офлайн
aaadrey 17 июня 2016
Light,
делаю примерно по аналогии ток под себя, есть кнопка пауза нажимаю консоль пишет UnassignedReferenceException: The variable buttonMenu2 of Player2DControl has not been assigned.
You probably need to assign the buttonMenu2 variable of the Player2DControl script in the inspector.
Player2DControl.Pause () (at Assets/Scripts/Player2DControl.cs:221)
код:

private GameObject buttonMenu2;
private GameObject buttonContinue;

void Start ()
{
buttonMenu2 = GameObject.Find("Menu2");
buttonContinue = GameObject.Find("Continue");

buttonMenu2.SetActive(false);
buttonContinue.SetActive(false);
}
public void Pause()
{
//FonImage.GetComponent<Image>().enabled = true;
paused = true;
Time.timeScale = 0;
buttonMenu2.SetActive(true);
buttonContinue.SetActive(true);
}

не могу догнать что он от меня хочет не можете подсказать ?
Офлайн
Light 17 июня 2016
Цитата: aaadrey
не очень понял скрипт. _menu зачем он нужен?

Это чтобы проверять, активно меню или нет.
Офлайн
aaadrey 17 июня 2016
не очень понял скрипт. _menu зачем он нужен?
Офлайн
Light 8 ноября 2015
Atanashi, проверено на версии 5.2.2, ошибок не обнаружено. Пакет обновлен.
Офлайн
Atanashi 8 ноября 2015
ошибка в unity 5 Assets/NULLcode Studio/GameMenu/Scripts/GameMenu.cs(286,29): error CS1061: Type `Text' does not contain a definition for `text' and no extension method `text' of type `Text' could be found (are you missing a using directive or an assembly reference?)
как исправить7
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика