Перейти к содержимому

Как добавить картинку в юнити 3д

  • автор:

Как загрузить картинку из Resourses в объект на сцене в UNITY?

Имеется GameObject c именем 222 , с компонентом SpriteRenderer .
В скрипте, активируемом по нажатии кнопки, следующее:

GameObject.Find ("222").GetComponent ().sprite = Resources.Load("Logo/ATL"); //Logo - папка в ресурсах, соответственно. 

В компонент gameobject сохраняется спрайт, но нигде не отображается на сцене. Подскажите, пожалуйста, в чем я ошибся?

Отслеживать
2,280 2 2 золотых знака 17 17 серебряных знаков 30 30 бронзовых знаков
задан 2 авг 2018 в 21:41
1 1 1 бронзовый знак

GameObject.Find («222»).GetComponent ().sprite — такой код даже компилироваться не будет, потому что метод GetComponent имеет обязательный параметр типа. Возможно вы неправильно скопировали код в свой вопрос?

2 авг 2018 в 21:46

прежде чем задать вопрос, посетите сайт с документацией. Вот пример использование вашего метода: boxCol = otherGameObject.GetComponent(); . Только не забудьте тип на нужный вам поменять.

2 авг 2018 в 22:09

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Спрайт

Я считаю, что лучше не мудрить и не умещать всё в одну строчку.
Разумней создать префаб со спрайтом. В картинке надо изменить тип текстуры на Sprite:

Затем можно просто перетащить картинку на сцену (будет создан объект-sprite), а потом, создав в проекте префаб, присвоить ему этот объект.
Ну а далее дело за малым:

GameObject twotwotwo; void Start() < twotwotwo = (GameObject)Instantiate(Resources.Load("ATL-Prefab")); // . ну и тут ты делаешь то, что тебе надо. >

У меня всё заработало.

С Resources.Load() не знаю, как быть. У меня возникает ошибка «InvalidCastException: Cannot cast from source type to destination type.», и у меня тоже ничего нет. Так что, я считаю, лучше использовать префабы; они работают.

Сanvas (Полотно)

Canvas (полотно) – это область, внутри которой находятся все элементы UI (пользовательского интерфейса). Полотно – это игровой объект (Game Object), с добавленным к нему компонентом Canvas. Все элементы UI должны быть дочерними этому Canvas.

Когда вы создаете новый элемент UI, такой как изображение (Image), используя меню GameObject > UI > Image, вместе с ним автоматически создается и Canvas, если до этого на сцене его еще не было. Элемент UI создается дочерним этому Canvas.

Область Canvas отображается в виде прямоугольника в окне Scene View. Это облегчает процесс расположения элементов UI без необходимости видеть игровое окно (Game View).

Canvas uses the EventSystem object to help the Messaging System.

Порядок отрисовки элементов

Элементы UI на Canvas появляются в том же порядке, в каком они расположены в иерархии. Первый дочерний элемент отрисовывается первым, второй – за ним и так далее. Если два элемента UI накладываются друг на друга, добавленный позднее будет поверх того, что был добавлен ранее.

Чтобы изменить то, какой элемент будет находится поверх остальных, просто поменяйте местами элементы в иерархии путем перетаскивания. Порядком также можно управлять при помощи скриптинга, используя следующие методы компонента Transform: SetAsFirstSibling, SetAsLastSibling и SetSiblingIndex.

Режимы отображения

У полотна есть параметр Render Mode, который определяет, где оно будет отображаться: в пространстве экрана (screen space) или игрового мира (world space).

Пространство экрана – Перекрытие (Screen Space — Overlay)

Этот режим отображения помещает элементы интерфейса на экран поверх сцены. Если меняется размер экрана или его разрешение, полотно автоматически примет нужный размер вместе с ним.

UI in screen space overlay canvas

Пространство экрана – Камера (Screen Space — Camera)

This is similar to Screen Space — Overlay, but in this render mode the Canvas is placed a given distance in front of a specified Camera. The UI elements are rendered by this camera, which means that the Camera settings affect the appearance of the UI. If the Camera is set to Perspective, the UI elements will be rendered with perspective, and the amount of perspective distortion can be controlled by the Camera Field of View. If the screen is resized, changes resolution, or the camera frustum changes, the Canvas will automatically change size to match as well.

UI in screen space camera canvas

Пространство игрового мира (World Space)

При этом режиме отображения Canvas ведет себя также, как и любой другой объект на сцене. Размер Canvas может быть задан вручную при помощи Rect Transform, а элементы интерфейса будут отображаться перед или за другими объектами на сцене, в зависимости от их трехмерного расположения. Этот режим удобен для тех интерфейсов, которые предполагаются как часть игрового мира (diegetic interfaces).

Текст в Unity

Текст является одним из наиболее важных компонентов голографических приложений. Для отображения текста в Unity можно использовать три типа текстовых компонентов: текст пользовательского интерфейса, сетка трехмерного текста и текстовая сетка Pro. По умолчанию текст пользовательского интерфейса и сетка трехмерного текста выглядят размытыми и слишком большими. Изменение нескольких переменных приводит к более четкому, более качественному тексту с управляемым размером в HoloLens. Вы можете повысить качество отрисовки, применив коэффициент масштабирования для получения правильных измерений при использовании компонентов текста пользовательского интерфейса и сетки трехмерного текста.

Как получить резкий и красивый текст

Размытый текст по умолчанию в Unity

Работа с трехмерными текстами (сеткой текста) и текстом пользовательского интерфейса Unity

В Unity предполагается, что все новые элементы, добавленные в сцену, имеют один размер единицы Unity или масштаб 100 % преобразования. Одна единица Unity преобразуется примерно в 1 метр на HoloLens. Для шрифтов ограничивающий прямоугольник для 3D TextMesh по умолчанию имеет высоту около 1 метра.

Работа со шрифтами в Unity

3D-текст (сетка текста) по умолчанию в Unity занимает одну единицу Unity, которая составляет 1 метр

Большинство визуальных конструкторов используют точки для определения размеров шрифтов в реальном мире. Есть около 2835 (2834,64566639962) точек в 1 метре. На основе преобразования системы точек в 1 метр и размера шрифта Сетки текста Unity по умолчанию 13, простая математика 13, разделенная на 2835, равна 0,0046 (0,004586111116, чтобы быть точным), что обеспечивает хорошую стандартную шкалу для начала (некоторые могут округлить до 0,005). Масштабирование текстового объекта или контейнера до этих значений позволит не только преобразовывать размеры шрифтов 1:1 в программе разработки, но и обеспечит стандарт, позволяющий поддерживать согласованность во всем интерфейсе.

Масштабирование значений для 3D-текста и текста пользовательского интерфейса Unity

Масштабирование значений для 3D-текста и текста пользовательского интерфейса Unity

Сетка 3D-текста Unity с оптимизированными значениями

Сетка 3D-текста Unity с оптимизированными значениями

При добавлении пользовательского интерфейса или текстового элемента на основе холста в сцену разница в размерах еще больше. Различия в двух размерах примерно равны 1000 %, что приведет к тому, что коэффициент масштабирования для текстовых компонентов пользовательского интерфейса составляет 0,00046 (0,0004586111116, если быть точным) или 0,0005 для округленного значения.

Текст пользовательского интерфейса Unity с оптимизированными значениями

Текст пользовательского интерфейса Unity с оптимизированными значениями

На значение по умолчанию любого шрифта может повлиять размер текстуры этого шрифта или способ импорта шрифта в Unity. Эти тесты были выполнены на основе шрифта Arial по умолчанию в Unity, а также другого импортированного шрифта.

Работа с Text Mesh Pro

С помощью Unity Text Mesh Pro можно обеспечить качество отрисовки текста. Он поддерживает четкие контуры текста независимо от расстояния с помощью метода подписанного поля расстояния (SDF). Используя тот же метод вычисления, который мы использовали выше для сетки трехмерного текста и текста пользовательского интерфейса, мы можем найти правильные значения масштабирования для использования с обычными типографическими точками. Так как шрифт 3D Text Mesh Pro по умолчанию с размером 36 имеет ограничивающий размер 2,5 единиц Unity (2,5 м), мы можем использовать значение масштабирования 0,005, чтобы получить размер точки. Размер текстовой сетки Pro в меню пользовательского интерфейса по умолчанию ограничен 25 единицами Unity (25 м). Это дает нам 0,0005 для значения масштабирования.

Масштабирование значений для текста и пользовательского интерфейса Unity 3D

Масштабирование значений для текста и пользовательского интерфейса Unity 3D

Рекомендуемый размер текста

Как и следовало ожидать, размеры типов, которые мы используем на пк или планшете (обычно от 12 до 32 пт), выглядят небольшими на расстоянии 2 метров. Это зависит от характеристик каждого шрифта, но в целом рекомендуемый минимальный угол обзора и высота шрифта для удобочитаемости составляет около 0,35°-0,4°/12,21-13,97 мм на основе наших исследований пользователей. Это примерно 35-40 пт с коэффициентом масштабирования, представленным выше.

Для ближнего взаимодействия на 0,45 м (45 см) минимальный угол обзора и высота шрифта 0,4°-0,5°/3,14–3,9 мм. Это примерно 9-12 пт с коэффициентом масштабирования, представленным выше.

Содержимое ближнего и дальнего диапазонов взаимодействия

в ближнем и дальнем диапазоне взаимодействия

Минимальный размер разборчивого шрифта

Расстояние Угол обзора Высота текста Размер шрифта
45 см (расстояние прямой манипуляции) 0.4°-0.5° 3,14–3,9 мм 8.9–11.13pt
2 м 0.35°-0.4° 12,21–13,97 мм 34.63-39.58 pt

Удобный размер удобочитаемого шрифта

Расстояние Угол обзора Высота текста Размер шрифта
45 см (расстояние прямой манипуляции) 0.65°-0.8° 5,1–6,3 мм 14.47-17.8 pt
2 м 0.6°-0.75° 20,9–26,2 мм 59.4-74.2 пт

Segoe UI (шрифт по умолчанию для Windows) хорошо работает в большинстве случаев. Однако старайтесь не использовать светлые или полулегкие семейства шрифтов небольшого размера, так как тонкие вертикальные штрихи будут вибрировать и ухудшать разборчивость. Современные шрифты с достаточной толщиной штриха хорошо работают. Например, Helvetica и Arial выглядят великолепно и разборчивы в HoloLens с регулярными или смелыми весами.

Угол просмотра

Расстояние, угол и высота текста

Текст с помощью набора средств Смешанная реальность версии 2

Качество отрисовки резкого текста с правильным измерением

На основе этих факторов масштабирования мы создали заготовки текста с текстом пользовательского интерфейса и сеткой трехмерного текста. Разработчики могут использовать эти заготовки для получения четкого текста и согласованного размера шрифта.

Качество отрисовки резкого текста с правильным измерением

Качество отрисовки резкого текста с правильным измерением

Шейдер с поддержкой окклюзии

Материал шрифта по умолчанию в Unity не поддерживает загораживание. По этой причине вы увидите текст за объектами по умолчанию. Мы добавили простой шейдер, поддерживающий окклюзию. На рисунке ниже показан текст с шрифтом по умолчанию (слева) и текстом с правильной окклюзией (справа).

Шейдер с поддержкой окклюзии

Шейдер с поддержкой окклюзии

Следующий этап разработки

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

Или перейдите к возможностям и API платформы смешанной реальности:

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

См. также раздел

  • Заготовка текста в MRTK
  • Оформление текста

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

Unity позволяет не делать меню настроек, так как есть встроенный диалог настроек качества и разрешения перед запуском игры. Однако если вы хотите сделать вашу игру неповторимой и показать, на что способны, как дизайнер, то эта статья именно для вас. После прохождения этого туториала вы сможете создавать свое собственное меню с таким функционалом – настройки громкости, разрешения, качества изображения, переключения полноэкранного и оконного режима. Интересно? Тогда запускай Unity и поехали!

Создание и дизайн главного меню и меню настроек

1. Создаем две сцены: Menu и Game
2. Открываем File->BuildSettings и перетаскиваем созданные сцены в Scenes in build.

image

Теперь можем приступать к созданию пользовательского интерфейса. Откройте сцену Menu и добавьте Panel. Сразу добавляется Canvas(Холст) и дочерним объектом к нему добавляется Panel (Панель).

image

Обратим внимание на инспектор для Canvas. А именно на компонент Canvas.

image

Render Mode автоматически выставлен на Screen Space – Overlay.

Screen Space – Overlay:

Способ рендеринга, при котором Canvas напрямую привязан к экрану. Если изменить разрешение экрана или размер, то Canvas с такой настройкой тоже изменит свой масштаб на подходящий. UI в таком случае будет отрисовываться поверх других объектов.

Важен порядок размещения объектов в иерархии. Холст Screen Space – Overlay должен находиться в самом верху иерархии, иначе он может пропасть из виду.

Screen Space – Camera:

В таком случае, Холст прикрепляется в камере. Для такой настройки обязательно нужно указать камеру которой соответствует Холст. Как и в предыдущем пункте, Холст будет менять свой масштаб в зависимости от разрешения и размера экрана, а также от области видимости камеры.

Так же для Холста с такими настройками важно размещение относительно других объектов. На переднем плане будут объекты, которые находятся ближе к камере, не зависимо от того, это UI или другие GameObjects.

World Space:

Холст размещается, как любой другой объект без привязки к камере или экрану, он может быть ориентирован как вам угодно, размер Холста задается с помощью RectTransform, но то, как его будет видно во время игры, будет зависеть от положения камеры.
В данном задании мы будем использовать Screen Space – Overlay.
Давайте настроим цвет панели. Можно также добавить картинку на фон. Для этого нужно обратить внимание на компонент Image в Инспекторе панели.

image

Как видите, картинка добавляется в поле Source Image. Картинку можно просто перетащить из файлов проекта, либо кликнуть на кружочек справа от поля.

Цвет выбирается в поле Color, либо с помощью инструмента пипетки.
Важно знать, что пипетка позволяет выбрать цвет за пределами Unity.
После того, как выбрали цвет или картинку, нам нужно разместить кнопки, которые всем будут управлять, а так же текст. Чтобы упростить себе задачу, для Panel мы добавим еще один компонент, который называется Vertical Layout Group. И сразу настроим его.

Нам необходимо разместить все кнопки и текст по центру экрана. Для этого находим в компоненте Vertical Layout Group пункт Child Alignment и выбираем Middle Center. Теперь все наши элементы, будь то кнопки или текст, будут выравниваться по центру, независимо от разрешения экрана.

Так же убираем галочки с ChildForceExpand. Должно получиться так:

image

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

В нашем меню должны быть следующие кнопки:

1. Start Game
2. Settings
3. Exit

Сейчас, добавляем Text дочерним элементом нашей Панели. Можете заметить, как он прикрепляется по центру. Иногда для этого требуется созданный элемент в окне Scene просто передвинуть на Panel и тогда он выровняется. Настраиваем текст так, как хочется с помощью компонента Text(Script) в инспекторе.

image

После добавляем Button. Кнопка добавится под текст.

Разберем компонент Button нашей кнопки. Нас интересует Transition – то, как кнопка будет реагировать на действия мышки. В Unity реализовано несколько способов. Пока рассмотрим довольно простой Color Tint. Это значит, что кнопка будет менять свой цвет при определенных состояниях. Интерфейс для настройки довольно удобный. Настраиваем так, как нравится.

image

Так же у объекта Button есть дочерний объект Text – это текст который будет отображаться на кнопке. В тексте прописываем Play.

Кажется, Текст и Кнопки находятся слишком близко друг к другу.

Что бы это исправить для нашего Текста Menu добавляем еще один компонент, который называется Layout Element. И ставим галочку напротив Ignore Layout.

image

После этого выставляем Anchor на Middle-Center.

image

Потом добавляем еще три кнопки и называем их Settings, Credits, Exit.
Можно поменять размеры кнопок. На этом этапе меню выглядит так:

image

Переходы между main menu и settings

Что бы переходить на меню опций не обязательно делать новую сцену.
Для начала создаем пустой GameObject (Create Empty) как Child нашего Холста. Назовем его Main menu. Потом нашу панель, со всеми инструментами сделаем дочерними элементами этого объекта. Должно получиться так:

image

Выбираем наш MainMenu объект и сделаем его дубликат. С выбранным элементом нажимаем комбинацию клавиш Ctrl+D. У нас появится новый объект.

image

Переименовываем новый объект в Settings. Для удобства управления инактивируем MainMenu.

image

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

За контроль Fullscreen будет отвечать элемент Toggle.
За громкость – Slider.
За качество изображения и разрешение – Dropdown.

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

Можно настроить Spacing в Vertical layout group, чтобы между элементами было немного пространства. Добавим на панель картинку и в итоге получим такой результат:

image

Программирование кнопок

Перейдем к написанию скрипта меню.

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

Это мы и пропишем в нашем скрипте.

Для MainMenu добавляем новый компонент MenuControls.cs и отрываем его.

Первое что надо сделать – удалить существующие методы Start() и Update() – тут они нам не нужны.

Дальше нам надо подключить следующее:

using UnityEngine.SceneManagement; 

После этого напишем свой метод для нажатия кнопки Play. Метод должен быть public — нам нужно иметь возможность видеть его за пределами нашего скрипта.

За загрузку сцены отвечает SceneManager и у него есть метод LoadScene. Существует несколько перегрузок метода. Можно передавать имя сцены, которую вы хотите загрузить. В нашем случае это сцена «Game».

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

public void PlayPressed()

Так же создаем метод для выхода из игры:

 public void ExitPressed()

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

Debug.Log("Exit pressed!"); 

Теперь необходимо прикрепить события кнопок к этим методам. Выбираем кнопку Play и находим в инспекторе следующее:

image

Это событие кнопки, которое по нажатию будет вызывать подписанные на событие методы. Добавляем метод нажимая на +.

В появившееся окно нужно перетащить объект, в котором содержится нужный скрипт. В нашем случае это Main Menu.

После этого нужно выбрать скрипт MenuControls и найти метод PlayPressed().

image

Точно также делаем для кнопки Exit. Только теперь выбираем метод ExitPressed().
Для кнопки Settings нам не нужно писать никакой код, так как некоторый функционал уже встроен.

Суть в том, что мы будем активировать GameObject. На этом этапе у вас должен быть активным MainMenu, а Settings не должно быть видно. Так же видим, что когда мы активируем Settings, он полностью перекрывает Menu. Суть в том, что играет роль порядок расположения дочерних объектов Холста – в каком порядке они расположены в иерархии в том порядке они и будут прорисовываться. Поскольку Settings у нас находятся над Main Menu, то они перекрывают меню.
Это мы и будем использовать.

Выбираем кнопку Settings и в OnClick() перетаскиваем наш объект Settings. В функциях выбираем GameObject ->SetActive(); и ставим галочку. Вот так:

image

Ну а для кнопки Back, которая находится в меню опций, можно таким же образом подключить событие SetActive для объекта Settings, но на этот раз нам нужно инактивировать наш объект, поэтому мы просто не ставим галочку.

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

Настройки

Настройки полного экрана

Первое что мы пропишем это переключение полноэкранного и оконного режимов.
Нужно убрать галочку с пункта Is On нашего Toggle элемента.
Создаем скрипт для объекта Settings. Назовем его Settings.cs.

Для начала нам надо хранить переменную типа bool которая будет отображать текущее состояние – полноэкранный режим или нет. А потом, по изменению toggle эта переменная будет переключаться на противоположное значение.

У экрана есть свойство Screen.fullScreen типа bool. Можно просто будем присваивать значение нашей переменной isFullScreen этому свойству.

Код выглядит так:

public void FullScreenToggle()

Увидеть результат можно только в билде. Давайте сейчас это сделаем. Учтите, что для того что бы билд был правильным нужно оставить активным только объект MainMenu, а Settings отключить. Если это сделано, то запускаем билд через File->BuildSettings и нажимаем кнопку Build.

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

Изменения громкости звука в игре

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

Добавим эти два элемента. Сначала добавляем AudioMixer. Правой кнопкой мыши в окне Project ->Create->AudioMixer.

Называем его GameSettings. После этого открываем окно AudioMixer: Window->Audio Mixer (Ctrl + 8).

Что бы контролировать параметры миксера через скрипт, их нужно сделать видимыми для этого скрипта. Эта процедура называется ExposeParameters. Для этого кликаем на Mixer и в инспекторе находим volume и кликаем правой кнопкой мыши. Выбираем Expose to script:

image

Теперь в окне Audio Mixer обратите внимание на пункт Exposed Parameters в верхней левой части.

image

Теперь там есть параметр. Кликаем на него и называем наш параметр masterVolume. Следует запомнить имя, которое ему присваиваем – его нужно будет указать в коде.

Переходим в Settings.cs и создаем поле AudioMixer, чтобы получить ссылку на него в коде.

public AudioMixer am; 

потом создаем метод

public void AudioVolume(float sliderValue)

Метод SetFloat будет принимать значения нашего слайдера и присваивать это значение параметру “masterVolume”.

Осталось прикрепить наш метод к событиям слайдера. Находим в инспекторе слайдера поле On Value Changed и точно так же прикрепляем объект. Вот только теперь нам надо не просто выбирать метод из списка, а использовать поле Dynamic float. Как видите, там уже есть наш метод, и он будет получать переменную от самого слайдера. Также нужно не забыть перетащить AudioMixer в соответствующее поле в компоненте Settings.cs.

image

Обратите внимание, что мы напрямую привязываем значение слайдера к значениям аудио-миксера. В аудио миксере громкость изменяется от -80 до 20. Нам же достаточно менять от -80(нет звука) до 0(нормальный звук). В настройках слайдера минимальное значение выставляем на -80, максимальное на 0.

image

Теперь добавим звуки в нашу игру, чтобы проверить работу скрипта.
На canvas добавим компонент Audio Source.
Настроим его следующим образом:

image

Audio Clip – саундтрек
Output – Мастер нашего миксера (дочерний объект)
Loop – поставить галочку – зациклить композицию, чтобы она играла постоянно.

Качество изображения

В Unity уже встроены настройки качества изображения. Edit->Project Settings->Quality. В инспекторе видим Quality settings. Их можно добавлять и настраивать.

Особенностью работы с настройками качества является следующее:
Каждой настройке соответствует индекс, который мы можем получить из Dropdown. Все что нужно сделать – переписать соответствующие пункты в нужные индексы в нашем UI элементе. Открываем его и в инспекторе находим Dropdown(Script) и в нем пункт Options. Дальше вписываем настройки в нужном порядке. У меня получилось так:

image

Дальше нужно прописать код. Мы продолжаем дополнять методами наш скрипт Settings.cs
Создаем метод, который будет принимать int – индекс выбранного пункта.

public void Quality(int q)

Сохраняем скрипт и подключаем метод к событию на нашем меню. На этот раз это событие Dropdown – On Value Changed.

Поскольку наш метод будет получать значение от самого UI элемента, то мы выбираем название метода из группы Dymanic int. по аналогии с предыдущим пунктом.

Разрешение экрана

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

Первое что нам понадобится – массив типа Resolution[] где мы будем хранить значения разрешений экрана.

Однако для пунктов выпадающего списка тип – string. Поэтому создаем список List<> в который мы будем сохранять значения возможных разрешений. Для работы со списками необходимо подключить:

using System.Collections.Generic; 

Также нам понадобится ссылка на соответствующий Dropdown. Для работы с UI элементами следует также прописать:

using UnityEngine.UI; 

В скрипте получим следующие поля:

Resolution[] rsl; List resolutions; public Dropdown dropdown; 

Инициализацию и заполнение проводим в методе Awake. Этот метод вызывается при запуске объекта, соответственно выполняется раньше, чем все остальные методы.

Получаем значения и каждое из них добавляем в List в формате ширина*высота. После этого очищаем список Dropdown и заполняем его новыми опциями.

public void Awake() < resolutions = new List(); rsl = Screen.resolutions; foreach (var i in rsl) < resolutions.Add(i.width +"x" + i.height); >dropdown.ClearOptions(); dropdown.AddOptions(resolutions); >

Теперь нужно создать метод, который будет менять разрешение экрана. Как и в предыдущих пунктах – принимать значение будем от UI элемента. Создаем функцию, которая принимает int

public void Resolution(int r)

В SetResolution необходимо передать параметры – ширина, высота и булевскую переменную, отвечающую за полный экран. У нас такая уже есть – это isFullScreen. Передаем ее в функцию.
Дальше не забываем подключить к соответствующему событию наш метод Resolution из группы Dynamic Int, а так же добавить ссылку на нужный Dropdown.

image

Готово. Теперь можно использовать это меню вместо скучного дефолтного лаунчера. Однако, чтобы был толк нужно отключить его запуск.

Edit->ProjectSettings-> Display Resolution Dialog-Disabled

image

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

  • Разработка игр
  • Разработка под Android
  • Unity
  • Графический дизайн
  • Дизайн игр

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *