Меню для игры [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

Офлайн
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
Офлайн
Light 8 ноября 2015
Atanashi, проверено на версии 5.2.2, ошибок не обнаружено. Пакет обновлен.
Офлайн
aaadrey 17 июня 2016
не очень понял скрипт. _menu зачем он нужен?
Офлайн
Light 17 июня 2016
Цитата: aaadrey
не очень понял скрипт. _menu зачем он нужен?

Это чтобы проверять, активно меню или нет.
Офлайн
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, переменная buttonMenu2 не назначена. Сделай ее публичной и назначь вручную, или измени способ определения переменой.
Офлайн
скажите как исправить ошибку в меню я с buid захожу готовая игру выдоет Failed to load PlayerSettings (internal index #0).
Most likely data file is corrupted, or built with mismatching
editor and platform support versions.
Офлайн
Light 24 января 2017
Лёша Погодин, обнови юнити, попробуй реимпортировать проект, т.е. удалить в проекте папку Library.
Офлайн
как сделать чтобы меню звук убавить и прибавить и музыку в игре
Офлайн
Light 24 января 2017
Лёша Погодин, для этого есть отельные переменные, о которых написано в статье.
Офлайн
CherkProB 19 февраля 2017
Если добавляю меня в сцену с fpc , то кнопки не нажимаются. Почему это происходит ? И как это исправит ?
Офлайн
Light 19 февраля 2017
CherkProB, какие кнопки?
Офлайн
CherkProB 19 февраля 2017
Light,
В меню (Когда нажимаю esc)
Офлайн
Light 20 февраля 2017
CherkProB, видимо что-то в твоем проекте, скинь архив файлов проекта, посмотрим.
Офлайн
Stason4ikRU 12 мая 2017
Нету меню Unity 5.6
Офлайн
Stason4ikRU 12 мая 2017
Stason4ikRU,
В Unity вообще не отображается меню.А так есть.
Офлайн
Light 12 мая 2017
Stason4ikRU, дочерние объекты меню отключены, их просто нужно сделать активными.
Офлайн
Stason4ikRU 18 мая 2017
Если нажать на Esc>управление и нажать на Esc то вызовится ещё 1 меню
Офлайн
Mari4og 18 мая 2017
Stason4ikRU, "в сцене должен быть объект EventSystem, если его нет, то добавьте GameObject -> UI" - проверь, вдруг забыл добавить.
Офлайн
Mari4og 18 мая 2017
Light, подскажите, насколько трудно интегрировать ваше "Меню выбора сцены с сохранением" в это меню?. Например, вместо кнопки "Авторы", кнопка "Загрузить"?
Офлайн
Light 19 мая 2017
Mari4og, особых сложностей в этом нет, кое-где код подправить и объединить оба меню в одну конструкцию.
Офлайн
Stason4ikRU 7 июля 2017
Как добавить свою кнопку например Dropdawn и что бы она исчезала вместе с меню ?
Офлайн
Light 8 июля 2017
Stason4ikRU, через меню юнити, добавить как дочерний объект меню и всё.
Офлайн
Stason4ikRU 8 июля 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 11 июля 2017
например вот ваш скрипт:

так ?
Офлайн
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,
Спасибо
Офлайн
Crysis001 20 июля 2017
Подскажите как сделать при нажатии на то место где хочу построить башню, появлялись кнопки вокруг башни(постройка, модификация и т.д.) ? Вот что то вроде этого:
https://m.vk.com/photos139165472?z=photo139165472_456239141%2Fphotos139165472?
Было бы очень хорошо если бы вы реализовали этот урок.
Офлайн
Light 21 июля 2017
Crysis001, такое будет, в свое время.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Дешевый хостинг
  • Яндекс.Метрика