Путь разработчика    

Как создать главное меню игры в Unity 5

В этом уроке мы разберем как создать главное меню игры в Unity 5. Меню мы будем делать при помощи UI, добавленного в Unity 5.

Начнем с того, что создадим Canvas. ПКМ по серой зоне в иерархии и создадим UI->Canvas, который мы назовем MainMenu. Canvas - это объект, в котором будут храниться все элементы меню нашей игры. Разберемся с его основными компонентами


Основной компонент, Canvas имеет в себе Render Mode, обладающее следующими вариантами:

  1. Screen Space - Overlay. Это значит, что данный UI будет отображаться перед каждой камерой в игре.
  2. Screen Space - Camera. В данном случае мы выбираем камеру, к которой этот UI будет привязан.
  3. World Space. В данном случае он будет привязан к мировому пространству и камера будет его видеть только когда наведется на него.

Для начала этого хватит для работы с данным компонентом. Следующий компонент - Canvas Scaler отвечает за масштабируемый интерфейс в игре при разных расширениях экрана.

  1. Constant Pixel Size отвечает за то, что наш интерфейс будет одного и того же размера, при любых разрешениях экрана, поэтому когда он будет отображаться нормально в 800x600 режиме, то в 1920x1080 он будет черезвычайно мал. Можно это исправить при мощи "Якорей" или Anchors, но можно просто правильно настроить следующий вариант.
  2. Scale With Screen Size будет увеличивать размер нашего интерфейса в зависимости от разрешения экрана.
    ReferenceResolution означает изначальный размер экрана, под который создан этот UI.
    ScreenMatchMode решает, какое действие будет произведено, если экран не является исходным:
    Match Width Or Height - будет увеличивать размер интерфейса, распределяя доли увеличения ширины и высоты в соответствии с полосой внизу
    Expand - Увеличивает интерфейса при изменении, так что он никогда не будет меньше, чем исходник.
    Shrink - Уменьшает интерфейс, так что он не будет больше исходника.
  3. Constant Physical Size Очень похож на Constant Pixel Size, но отличается тем, что там можно выбирать, в какой единице измерения будут производиться расчеты. В самом начале это вам не будет требоваться.

Следующим компонентом является GraphicRaycaster, он используется для настройки лучей(raycast) идущих в наш интерфейс из игрового пространства. Он обладает следующими параметрами:
Ignore Reversed Graphics - Следует ли рассматривать графику, обращенную в сторону от луча
Blocked Objects, Blocking Mask - Объекты, которые будут блокировать луч

Так как у нас в меню ничего не будет стоять перед ним, то этот компонент можно не настраивать. Теперь выставим следующие настройки: Canvas Scaler выставим в значения Scale With Screen Size и Match Width Or Height, а слайдер переместим на 0,5 для того, чтоб наш интерфейс равномерно расширялся по экрану при изменении разрешения.

И наконец приступим к созданию главного меню игры. Выбрав MainMenu при помощи ПКМ создадим новый элемент UI->Panel, который переименуем в MenuBackground. Далее в компоненте RectTransform необходимо сделать так, чтобы якоря были в середине экрана, так как меню будет масштабироваться именно от середины.

Так же необходимо либо вручную, либо при помощи координат width и height сделать такой размер меню, чтоб удовлетворял вашим требованиям. Можно еще поиграться со свойствами компонента Image и выбрать для вашего заднего фона другую картинку или убрать прозрачность.

Теперь, нажимая ПКМ на MenuBackground добавим туда 2 кнопки: Resume и Exit. Расположим их так же относительно центра, или по вашему усмотрению, в любой другой стороне. Не забудте поменять внутри Button есть Text, в котором можно изменить компонент Text и поменять надпись на кнопке. Получилось так:

Можем пока отключить наше меню (выбрав MainMenu и убрав галочку возле имени). В данный момент нам необходимо сделать, чтоб наше меню вылезало при нажатии на кнопку ESC. Для этого создадим новый скрипт MainMenuController и добавим его в компоненты камеры (MainCamera). А в его коде мы напишем:

Python

Кроме метода Update, который ждет нажатия ESC, есть еще 2 метода для кнопок меню. Они будут работать при нажатии этих кнопок. Но для начала надо объяснить и настроить компонент камеры. В компоненте MainMenuController появилась строка "MainMenu". В ней будет храниться ссылка на наше главное меню.

Для этого нужно их Hierarchy перенести в Inspector(в котором выбрана наша камера), в это поле, MainMenu. Time.timeScale = 0 необходимо для того, чтоб все действия, которые задействуют Time.deltaTime остановились. Например, если бы мы сделали это в предыдущем уроке, то наш персонаж бы остановился(включая анимацию) на время паузы.

Теперь во время игры при нажатии на ESC открывается окно паузы, но кнопки не работают. Необходимо их настроить. Нажмем на кнопку Resume и в компоненте Button необходимо нажать на "+" в свойстве OnClick(). Появится новая запись, в эту новую запись необходимо перенести нашу камеру и вместо "No Function" выбрать наш скрипт и нужный метод. Получится вот так:

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

По итогу этого урока мы разобрали как создать главное меню игры в Unity 5 и сделали, чтоб во время открытия меню игра останавливалась.



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Как преобразовать TimeStamp в Date в Java?

API JDBC использует отдельный класс Date, Time и Timestamp для подтверждения типа данных DATE, TIME и DATETIME из базы данных, но большая часть объектно-ор...

23 10 2020 21:27:49

Размеры файлов анализа в KB, MB, GB и т. д. В C#

Пример Формат файлов формата в К Б, М Б, Г Б и т. д. В C# показывает, как преобразовать число в строку, отформатированную в К Б, М Б и т. д. Этот пример делает...

22 10 2020 6:34:15

Печать изображений в C#

В этом примере показан простой способ печати изображений. Когда вы печатаете, обработчик события PrintPocument PrintDocument предоставляет объект Graphics...

21 10 2020 11:10:12

Отображать образцы форматов для разных локалей в C#

При запуске программы выполняется следующий код. Этот код сначала создает значения float, decimal и DateTime. Затем он перебирает объекты CultureInfo, возв...

20 10 2020 22:20:45

В чем разница между классом и прототипным наследованием?

Класс похож на план. Классический подход к созданию объекта состоит в том, чтобы определить структуру объекта, используя объявление CLASS и создать экземпл...

19 10 2020 3:59:56

Словарь (Dictionary) в Python

Словарь представляет собой тип данных похож на массивы, но работает с ключами и значениями вместо индексов. Словари в Python также называются «сопоставлени...

18 10 2020 16:41:27

Математические функции Python

Функции могут делать что угодно, но их основной шаблон использования принимает параметры и возвращаемые значения . Математический модуль предоставляет неко...

17 10 2020 16:57:29

Инициализация элементов управления DataGridView с объектами в C#

В этом примере показано, как легко инициализировать элементы управления DataGridView, чтобы отобразить свойства элементов. В этом примере используется след...

16 10 2020 9:12:45

Объявлять и инициализировать пустые массивы в C#

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

15 10 2020 3:25:23

Печатать звезды в C#

В этом примере показано, как вы можете печатать звезды с определенными размерами на C#. Недавно кто-то связался со мной, спрашивая, знаю ли я о программе,...

14 10 2020 2:21:35

Как включить JavaScript в своем браузере?

Как включить JavaScript в Chrome? Щелкните в правом верхнем углу окна браузера Chrome. В раскрывающемся меню Нажмите « Настройки» Прокрутите вниз и нажмите...

13 10 2020 1:25:46

Философия Java (Брюс Эккель)

Java нельзя понять, взглянув на него только как на коллекцию некоторых характеристик, - необходимо понять задачи этого языка как частные задачи программиро...

12 10 2020 20:22:50

Исключение специальных символов в JavaScript

Управляющий символ позволяет вам выводить символы, которые обычно не могут быть доступны, как правило, потому что браузер интерпретирует его по-разному с т...

11 10 2020 9:30:16

Отображение перспективного изображения в C#

Некоторое время назад кто-то спросил меня, как он может отображать изображение в WPF с одной стороны, меньшей, чем другая, чтобы создать визуальный вид пер...

10 10 2020 3:24:35

Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера, 3-е издание (Юрий Ревич)

Изложены принципы функционирования, особенности архитектуры и приемы программирования микроконтроллеров Atmel AVR. Приведены готовые рецепты для программир...

09 10 2020 21:47:47

Список всех файлов в папке в Java

Как читать все .txt-файлы в папке Подсчет количества файлов в каталоге с помощью Java Источник: http://net-informations.com/Java/files/folder.htm...

08 10 2020 19:23:10

Запись значений в реестре в C#

Пример Чтение реестра значения (чтобы получить размер значка на рабочем столе) в C# показывают, как считывать значения из реестра. В этом примере показано,...

07 10 2020 15:38:24

Методы расширения в C#

C# поддерживает несколько способов расширения существующих типов без изменения существующего кода. Существует два разных способа: методы расширения и перео...

06 10 2020 1:19:37

Eclipse

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

05 10 2020 13:34:48

Разница между абстрактным классом и интерфейсом в Java

Термин « Абстракция» означает скрытие внутренней реализации функции и только отображение функциональности для пользователей. Это означает, что абстрактный к...

04 10 2020 10:52:13

Преобразование растрового изображения в курсор в C#

Преобразование растрового изображения в курсор непросто, но вы можете сделать это, используя функцию API CreateIconIndirect. В этом примере используется сл...

03 10 2020 3:39:58

Основы программирования в Embarcadero Delphi (Никита Культин)

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

02 10 2020 17:17:19

Добавление метода расширения в класс Graphics в C#

По какой-то странной причине метод DrawRectangle класса Graphics не может принимать параметр RectangleF в качестве параметра. Он может принимать значения R...

01 10 2020 13:30:17

Используйте двойную буферизацию, чтобы предотвратить мерцание в PictureBox в C#

Пример Использование двойной буферизации для предотвращать мерцание при рисовании на C# показывает, как сделать форму, использующую двойную буферизацию для...

30 09 2020 10:53:54

Выполнение бинарного усиления контраста на изображении в C#

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

29 09 2020 16:32:24

Метод Substring() в Java

Подстрока является частью строки. Метод String substring() Java String возвращает новый строковый объект из данной строки. Синтаксис String str = "Java Str...

28 09 2020 1:26:30

C# 6.0. Справочник. Полное описание языка (Джозеф Албахари, Бен Албахари)

Данное руководство, ставшее бестселлером, позволяет получить точные ответы практически на любые вопросы по C# 6.0, CLR и основным сборкам .NET Framework. П...

27 09 2020 14:30:51

Eclipse

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

26 09 2020 18:46:48

Среда разработки Intellij idea

IntelliJ IDEA — интегрированная среда разработки программного обеспечения на многих языках программирования от компании JetBrains. В 2001 году была выпущен...

25 09 2020 17:19:55

Бизли Д. Python. Подробный справочник (4-е издание, 2010)

Авторитетное руководство и детальный путеводитель по языку программирования Python предназначен для практикующих программистов. Книга компактна, нацелена н...

24 09 2020 0:21:51

With в Python

В python ключевое слово with используется при работе с неуправляемыми ресурсами (например, файловыми потоками). Инструкция for упрощает обработку исключени...

23 09 2020 21:12:42

Плюсы игрового движка Unity и его особенности

Вступление перед серией обучающих уроков по Unity 5...

22 09 2020 9:58:38

Разрешить ограниченный выбор CheckBox в C#

Обычно пользователь может проверить или снять флажок CheckBox независимо от других параметров. Это сообщение показывает, как вы можете разрешить ограниченн...

21 09 2020 4:45:25

Java Autoboxing и Unboxing

Autoboxing и Unboxing - это функции, включенные в Java 1.5, где автоматическое преобразование происходит от примитивного типа до соответствующего класса кл...

20 09 2020 17:11:16

PHP. Объекты, шаблоны и методики программирования, 4-е издание (Мэт Зандстра)

Четвертое издание книги было пересмотрено и дополнено новым материалом. Книга начинается с обзора объектно-ориентированных возможностей PHP, в который вклю...

19 09 2020 20:32:25

1С:Предприятие 8.0: Приемы программирования (Всеволод Несвижский)

Книга 1 С: Предприятие 8.0: Приемы программирования полностью построена на реальных примерах и задачах, решаемых 1 С-программистами в повседневной работе. Пре...

18 09 2020 2:48:49

Что такое singleton класс в Java?

В объектно-ориентированном программировании шаблон Singleton ограничивает создание экземпляра класса и гарантирует, что в JVM (виртуальная машина Java) сущ...

17 09 2020 14:41:30

Как генерировать случайные целые числа в определенном диапазоне в Java

В Java 1.7 или более поздней версии стандартный способ сделать это выглядит следующим образом: min: минимальное значение max: максимальное значение Пример...

16 09 2020 11:56:27

Генерация случайных полигонов в C#

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

15 09 2020 22:12:24

Что такое классы-оболочки в Java

Как сказано в названии, класс-оболочка обертывает (охватывает) вокруг типа данных и дает ему вид объекта. Они используются для преобразования любого примит...

14 09 2020 6:33:17

Перезапустите диспетчер очереди печати в C#

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

13 09 2020 17:46:41

Используйте ключевое слово params в C#

Если вы используете ключевое слово params перед параметром массива, используемым в качестве параметра last в методе, тогда вызывающий код может передавать...

12 09 2020 22:18:20

Turbo Pascal: Учебник (С. А. Немнюгин)

Цель данного учебного курса - обучить программированию на Паскале, точнее, на том его расширении, которое было создано фирмой Borland и называется Турбо Па...

11 09 2020 6:34:25

Как заставить пользователя ввести float в C#

Это изменение замечательно просто. ( Почти так, как я это планировал, да?) Ключевым методом, определяющим, является ли новое значение TextBox допустимым, яв...

10 09 2020 10:56:41

Разница между substr() и substring() в JavaScript

Строка JavaScript представляет собой объект, который представляет последовательность символов. Метод substr() извлекает части строки, начиная с символа в у...

09 09 2020 16:31:12

Нарисуйте кривую Безье в C#

В этом примере показано, как использовать метод DrawBezier класса Graphics для рисования кривой Безье. Кривая Безье соединяет две конечные точки с гладкой...

08 09 2020 3:21:30

Используйте «округление банкира» и «нормальное округление» в C#

По умолчанию метод Math.Round использует «округление банкира». При округлении банкира число с конечной цифрой 5 округляется до ближайшего четного числа, а...

07 09 2020 11:51:16

C# 4.0 Полное руководство (Герберт Шилдт)

В книге "C# 4.0 Полное руководство" Г. Шилдта по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все осно...

06 09 2020 19:59:30

Что такое JVM и является ли она независимой от платформы?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код (файлы .class). JVM - платформа...

05 09 2020 13:21:49

Позвольте пользователю выбрать критерии поиска базы данных в C#

Верхняя часть этой программы содержит три столбца элементов управления. В левом столбце содержатся комбинированные поля, содержащие имена полей в таблице б...

04 09 2020 6:33:30

Глобальные переменные в JavaScript

Как и другие языки программирования, JavaScript также имеет локальные и глобальные переменные. В JavaScript объекты и функции также являются переменными. О...

03 09 2020 9:41:25

Циклы в Bash (for, while, until, break, continue, select)

В этом разделе нашего учебного пособия по Bash мы рассмотрим различные форматы циклов for, while, until, доступные нам, а также break, continue, select...

02 09 2020 5:13:17

Разница между capacity() и size() вектора в Java

Разница между capacity() и size() в Java.util.Vector заключается в том, что size() - это количество элементов, которые в настоящее время удерживаются, а ca...

01 09 2020 14:34:49

Перетаскивание изображений при отображении предварительного просмотра в C#

Пример Перетаскивание изображений в C# объясняет, как для перетаскивания изображений. См. Этот пример для основных идей. ( Обратите особое внимание на второ...

31 08 2020 23:38:10

Создание трехбуквенных слов в C#

В этом примере используется следующий очень простой код для генерации трехбуквенных слов с использованием букв от a до z. Для генерации букв код использует...

30 08 2020 15:14:18

Распечатайте форму или элемент управления в C#

В этом примере показано, как вы можете распечатать форму или элемент управления в программе на C#. Еще во времена Visual Basic 6 был метод PrintForm. Он пр...

29 08 2020 1:20:23

Назначение оператора «/» и «//» в python?

Разделение («/»): делит левый. Отдел работает на Python так, как он математически определен. Floor Division ("//"): разделение операндов, где результатом я...

28 08 2020 18:38:42

График уравнения в C#

Этот код начинается с определения границ координат -3 & le; x & le; 3, -3 & le; y & le; 3, где он будет рисовать график. Затем код превращает Bitmap в соот...

27 08 2020 23:30:15

Использование методов расширения строк для проверки номеров социального обеспечения в C#

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

26 08 2020 3:39:34

Язык программирования С++ (Б. Страуструп)

Книга Б. Страуструпа " Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на нем. Это завершенное руко...

25 08 2020 10:40:21

RandomAccessFile в Java

Java RandomAccessFile обеспечивает несущественный доступ к файлам. Он ведет себя как большой массив байтов, хранящихся в файловой системе. Это означает, чт...

24 08 2020 7:23:47

Методы в C#

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

23 08 2020 23:23:58

Сохранение цветовой палитры в настройках программы на C#

Пример Сделать постоянную цветовую палитру в C# показывает, как программа может использовать настройки для сохранения и восстановления цветовой палитры. Пр...

22 08 2020 11:34:37

Добавление вкладок в TabControl во время выполнения в C#

Сообщение Сделать улучшенный собственный вкладчик TabControl в В C# показано, как создать созданный владельцем TabControl, который позволяет пользователю у...

21 08 2020 1:59:21


Parse error: syntax error, unexpected ',' in /home/users/9/9165884745/domains/flash-mx.ru/lessons/926.php on line 69