Как сделать уровни unity

Добавил пользователь Morpheus
Обновлено: 04.10.2024

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

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

Что такое Unity?

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

Состоит из визуального редактора, редактора кода, инструмента для написания скриптов – логики поведения объектов. Она позволяет вносить изменения, не покидая сцену, и в реальном времени оценивать их результат.

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

Изначально движок назывался Unity3D, вследствие переименован в Unity.

Возможности Unity

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

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

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

Имитация физических явлений и объектов на основе частиц (атмосферные осадки, огонь, отражения) проводится с задействованием разработки от Nvidia PhysX.

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

Игровой движок Unity: почему его выбирают

Построение физической модели

Настраиваемый под разработчика интерфейс с поддержкой Drag&Drop упрощает работу над сценами, их отладку и редактирование без переключения между окнами.

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

Последние можно как создавать с нуля, так и редактировать имеющиеся. Средство для создания трёхмерной анимации поддерживает её импорт с Blender, 3DsMax и прочих 3D-редакторов.

Для оптимизации нагрузки на оборудование разработчик предусмотрел опцию Level Of Detail.

Она снижает детализацию и качество прорисовки отдалённых объектов, а при приближении – прорисовывает их полностью. Алгоритмы Occlusion Culling не визуализируют объекты, расположенные вне поля зрения камеры, удаляют из памяти остающееся за спиной игрока.

Игровой движок Unity: почему его выбирают

Объекты за спиной удаляются из памяти

Скомпилированная игра для Windows запускается через исполнительный файл, все ресурсы (уровни, мультимедиа) хранятся в отдельных файлах, динамически подключаемых библиотеках.

В Unity Asset Server есть инструменты для реализации мультиплеера. Система контроля версий с графическим представлением позволит откатить состояние проекта, отслеживать изменения между версиями. Unity работает с освещением: поддерживает трассировку лучей – создаёт реалистичную картинку путём отслеживания взаимодействия света с поверхностями. Работает со всеми современными графическими технологиями: DirectX 12, VRWorks, Vulkan, LiquidVR.

Особенности Unity

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

Игровой движок Unity: почему его выбирают

Многоуровневая локация

Платформа понимает десятки форматов моделей, аудиоматериалов, текстур, нормалей, скриптов. Последние можно экспортировать для применения в иных проектах либо сжимать в один файл. Движок визуализации сцен и объектов в реальном времени на лету отображает вносимые изменения.

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

Asset Store предлагает часть ассетов бесплатно. Разработчикам предоставляет возможность загружать в библиотеку Unity собственные разработки через редактор, продавать их.

Преимущества и недостатки

Движок обладает рядом положительных и отрицательных сторон.

К положительным относят:

Недостатки платформы:

  • Проблемы при разработке многокомпонентных проектов из-за ограничений визуального редактора.
  • Сложности в подключении внешних плагинов – из-за отсутствия ссылок на них в программе модули придётся искать, устанавливать и настраивать самому.
  • Проблематичное внесение изменений в шаблоны экземпляров.
  • WebGL-редакция отличается рядом проблем с быстродействием, работоспособностью и стабильностью.
  • Стоимость – Pro-версия стоит $1800, а Enterprise — $4000 – неподъёмная сумма для фрилансера, их группы, небольшой студии разработчиков.
  • Быстродействие, по сравнению с другими движками, при разрастании проекта.
  • Большой размер скомпилированного файла особенно для мобильных платформ.

Игры на Unity

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

Игровой движок Unity: почему его выбирают

Игра с дополненной реальностью

С компьютерных игр отметим:

Мобильные развлечения на Unity: Age of Magic, Chaos Lords, Jurassic Monster World, Royal Blood, Guns of Boom, Pokemon Unite и Go.

Мультфильмы, созданные с помощью Unity: Dead Pixels​​​​​​​, Bonfire, Jigsaw.

Кому стоит использовать этот движок

Платформа рассчитана на начинающих геймдевелоперов и небольшие компании, которых функциональность простых продуктов вроде RPG Maker, Kodu Game Lab не устраивает, а ресурсов приобрести продвинутый движок нет. Unity применяется для создания видеороликов, реализации кроссплатформенных 2D-проектов (поддержка 2D появилась недавно) и масштабных проектов вроде The Elder Scrolls: Legends, Pillars Of Eternity. Также применяется для написания симуляций.

Игровой движок Unity: почему его выбирают

Разработка кроссплатформенной игры

Как работать в Unity

После выбора Юнити пора приступать к изучению его возможностей.

Первые шаги

Для реализации проекта на Unity определитесь с версией движка: Plus – 399 $ в год, Pro – 1800 $ за 12 месяцев, 4000 $ в год. Все отличаются по функциональности. Есть бесплатные версии для студентов аккредитованных учреждений и персональной эксплуатации – то, что нам нужно. Загрузите пакет с официального сайта и установите. После инсталляции в составе можно обнаружить Unity Hub, что же это за продукт и зачем нужен? Автономная программа, упрощающая управление проектами: поиск, выгрузку в облако, скачивание на компьютер, удаление, загрузку в редактор.

Игровой движок Unity: почему его выбирают

Создание проекта

Как создать свой проект

Для работы над первой игрой необходимо завести аккаунт Unity Hub.

После загрузки проекта увидите список своих разработок.

Здесь они добавляются, удаляются, копируются и переносятся в облако, на локальный диск.

Игровой движок Unity: почему его выбирают

Редактор Unity

Игровой движок Unity: почему его выбирают

Свойства объекта

Благодаря ему путём изменения свойств из простейших геометрических фигур делаются игровые объекты.

На платформе применяется компонентно-ориентированный подход. Всё в сцене представлено игровыми объектами GameObject, состоящими из ряда компонентов:

  • графический – модель, например, мячик;
  • управление – привязывается к кнопкам, поведению мыши, скриптам, событиям;
  • свет – для источников освещения.

Для управления видом сцены (перемещением камеры, масштабированием) пользуйтесь соответствующими кнопками на панели инструментов либо мышкой.

Кликните по одной из осей и перетаскивайте её для изменения размера объекта в этом направлении.

Игровой движок Unity: почему его выбирают

Управление габаритами GameObject

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

Доброго времени суток, подскажите пожалуйста как сделать переход на следующий уровень (сцену) в Unity 2D.
К примеру герой проходит уровень, доходит до объекта (финиш) и сразу переходит на следующий уровень(сцену)
Я совсем новичек и запуталась какой нужен код и куда его вставить в Character.
Код Character прикрепляю. Извините если что не так)))

Переход на следующий уровень
Добрый день! Подскажите как решить следующую задачу. создаю игру из нескольких уровней. Игрок.

Программа для тестирования. Как сделать переход на следующий вопрос
//Создать программу тестирования: пользователю на форме предлагается вопрос и //4е варианта.

Сделать переход на следующий учебный год
Как сделать переход на следующий учебный год(чтобы к примеру 2 класс стал 3 и так далее, а 11 чтоб.

Как сделать чтобы уровень змейки и уровень яблока совпадал?
Здравствуйте. Как сделать чтобы уровень змейки и уровень яблока совпадал?

Unity — это среда, которая позволит детям почувствовать себя настоящими разработчиками игр! На движке Unity 3D ребята могут создавать анимацию, запрограммировать игровую сцену и полноценные игры. А также познакомиться с языком программирования "Си шарп", на котором в Unity пишутся скрипты.

Школа программирования для детей "Пиксель" подготовила бесплатные уроки Unity 3D, которые познакомят детей с программой и научат создавать первые игры. Поддержите нас, ставьте палец вверх, если наш бесплатный курс по Юнити окажется полезным для ваших детей.

Как скачать Unity 3D на ПК

Для начала скачаем и установим программу на компьютер.

Урок 1. Как сделать анимации в Unity 3D

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

Урок 2. Как сделать телепорт в Unity 3D

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

Урок 3. Как сделать спавн объектов в Unity 3D

Мы изучим 2 способа создания спавна объектов: на канвасе (canvas) и в пределах камеры. А еще узнаем, как создавать префабы.

Урок 4. Триггеры в Unity 3D | Столкновение персонажей

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

Урок 5. Как создать таймер в Unity 3D

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

Урок 6. Перемещение объекта мышью в Unity 3D

Функция Mouse Drag или, по-другому, метод перетаскивания нужен для того, чтобы перетаскивать объекты в игре. Например, как мы показываем в видео, чтобы перемещать еду на персонажа и кормить его.

Урок 7. Как сделать полосу здоровья персонажа в Unity 3D

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

Урок 8. Как сохранить игру в Unity 3D

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

Урок 9. Создаем игру "Раннер" в Unity за 30 минут

Урок 10. Как экспортировать игру из Unity на ПК или Android (как настроить для Play Market)

В этом видео расскажем, как собрать игру под ПК или под Android: в каком порядке собрать сцены, какие им дать номера, а еще какие настройки нужны, чтобы загрузить игру Play Market.

Урок 11. Как загрузить игру в Play Market

Мы собираем игру и заполняем все настройки для Play Market. Теперь другие пользователи смогут сыграть в вашу игру, а вы будете на этом зарабатывать.

Урок 12. Как сделать прыжок в Unity 3D

В этом уроке мы разберем, как сделать прыжок персонажа в 2D- и в 3D-проекте. Для этого мы создадим две сцены, напишем скрипты на языке Си Шарп.

Урок 13. Как управлять персонажем в Unity 3D

Давайте научим нашего персонажа двигаться. Для этого мы зададим переменные типа float, они будут отвечать за скорость, поворот и перемещение по горизонтали и по вертикали. И, конечно, напишем скрипты для 2D- и 3D-версии игры.

Урок 14. LineRenderer в Unity 2D

LineRenderer позволяет упростить рисование линий. В этом видео мы напишем два скрипта: Line Point позволит проводить прямую линию между любыми двумя точками, а с помощью Draw Line мы сможем рисовать неотрывную линию.

Урок 15. Как сделать автосимулятор в Unity 3D | Как сделать гонки в Unity 3D

Пришло время сделать гоночную игру! Давайте построим небольшую трассу, настроим модель автомобиля и напишем код для коробки передач: наш автомобиль будет двигаться в разные стороны и менять скорость.

Наши плейлисты регулярно пополняются, подписывайтесь на наш YouTube-канал , чтобы следить за выходом новых видео и открывать для себя мир IT-технологий!

Если же вам нужен наставник, загляните в Школу программирования для детей “Пиксель”: запишитесь на полный курс по разработке игр на движке Unity 3D .

Разработка игр на Unity — отличный способ войти в игрострой и начать свой путь в геймдеве. Первые вопросы, которыми задаётся новичок, это как стать разработчиком игр, на что обращать внимание и где учиться.

Мы с факультетом разработки игр на Unity от GeekBrains собрали 20 советов и трюков, которые помогут освоиться в редакторе.

Не используйте Distance() или magnitude в векторах

Для расчёта расстояния между двумя векторами есть метод Distance() и поле magnitude . Но в процессе вычислений они оба используют операцию извлечения квадратного корня, которая является очень ресурсозатратной. Чтобы этого избежать, используйте поле sqrMagnitude . Оно возвращает квадрат расстояния между векторами. Остаётся лишь сравнить его со значением, также возведённым в квадрат.

Математические операции в полях инспектора

В любых числовых полях инспектора можно вводить не только цифры, но и математические выражения. Например 2 / 3 , 0,5 * 7 .

С версии 2021.2.0 Alpha 10 в инспекторе стало ещё больше доступных выражений:

  • sqrt — извлечение квадратного корня;
  • sin / cos / tan — синус/косинус/тангенс значения соответственно;
  • floor — округление значения вниз;
  • ceil — округление значения вверх;
  • round — округление значения к ближайшему целому числу.

Также математические операции можно выполнять с выделением нескольких объектов. Например выражение -=10 отнимет 10 от соответствующей координаты каждого объекта.

Ещё можно распределить координаты случайно или равноудалённо с помощью функций L(N,M) и R(N,M) соответственно, где N и M — минимальное и максимальное значения координат.

Rich Text в консоли

В обучении разработке игр часто упускают возможности кастомизации Unity, которые достаточно обширны. Например во встроенных компонентах текста UI используется форматирование Rich Text. Оно позволяет сделать текст жирным, курсивом, изменять его цвет, размер и даже присваивать материал.

Пример Rich Text в разработке на Unity

Создание элементов меню редактора

Используя атрибут [MenuItem(“My Menu”)] , можно создавать собственные вкладки меню и элементы в них. Требуется импорт пространства UnityEditor .

Код для создания кнопки меню в Unity

Создание дополнительных опций в контекстном меню компонента

Помимо собственных элементов меню можно создавать дополнительные элементы в контекстном меню компонентов. Для этого используется атрибут [ContextMenu(“Name”)] .

Код для созданий дополнительных опций в Unity

Кастомная опция в контекстном меню при разработке игр в Unity

Сохранение изменений компонента в Play Mode

Если в процессе создания игры на Unity внести какие-либо изменения в компонент с запущенной игрой, то эти изменения не сохранятся. Если вы вносили изменения в пределах одного компонента, то все его значения можно скопировать в контекстном меню компонента (Copy Component), а после того, как вы остановите игру, обратно их вставить через то же контекстное меню (Paste Component Values).

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

HideInInspector и SerializeField

Эти два атрибута помогут настроить отображение нужных полей в инспекторе. Если у вас много публичных полей, которые засоряют инспектор, то вы можете скрыть их атрибутом HideInInspector . Если же вам нужно, чтобы приватное поле, которое по-умолчанию не отображается в инспекторе, всё же можно было редактировать, используйте атрибут SerializeField .

Автоматическое создание глубины в изометрических играх

При создании 2D игры с изометрической проекцией вам может понадобиться имитировать глубину сортировкой слоёв спрайтов. То есть тот объект, который находится на заднем плане, должен быть на слой ниже переднего объекта. Если для неподвижных объектов это легко реализовать, просто настроив их слои в компоненте SpriteRenderer , то для подвижных объектов всё немного сложней.

Однако Unity уже позаботились об этом и дали возможность сортировать объекты по слоям, исходя из их координат. Для начала нужно настроить сортировку. Для этого перейдите в Edit→Project Settings→Graphics→Camera Settings. Свойство Transparency Sort Mode выставьте в Custom Axis , а Transparency Sort Axis в (0; 1; 0) . Теперь все объекты, которые будут находится на одном слою, будут автоматически сортироваться исходя из координаты Y. Те, что выше — на задний план, а те, что ниже — на передний.

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

Выполнение кода, не привязанного к объекту

Атрибут метода [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] позволит выполнить код, не привязывая скрипт к какому-либо объекту. В данном случае код вызовется сразу после загрузки сцены.

Структуры и классы

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

Создание подслоёв

Меню слоёв в редакторе Unity

Фокусировка камеры редактора на объекте и следование за ним

Чтобы сфокусироваться камерой редактора на каком-либо объекте, выделите этот объект и нажмите F. Если объект движется и вам нужно, чтобы камера следовала за ним, нажмите F дважды.

Матрица коллизий

В Unity можно определить, какие из объектов будут сталкиваться друг с другом, а какие нет. Делается это через настройку матрицы коллизий. Для этого перейдите в Edit→Project Settings→Physics→Layer Collision Matrix.

Матрица слоёв физики

Если на пересечении двух слоёв убрать галочку, то объекты этих слоёв не будут сталкиваться друг с другом. В данном случае объект слоя Player не будет сталкиваться с другими объектами своего слоя и объектами слоя Walls .

Debug Mode в инспекторе

Во время обучения разработке игр нередко попадаются ошибки. К счастью, стандартный инспектор в Unity имеет режим отладки. В нём отображаются все приватные поля компонентов. Чтобы включить его, вызовите контекстное меню вкладки инспектора или нажмите на троеточие в верхнем правом углу и выберите режим Debug. В некоторых ситуациях этот режим сильно упрощает процесс отладки и разработки игры.

Меню инспектора в редакторе Unity

Пример инспектора с включённым Debug Mode в Unity

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

Мониторинг через график

В курсах по созданию игр консоль часто используется для вывода в неё каких-либо значений и мониторинга. Но если значение изменяется очень часто, то следить за этим будет не очень удобно. В таких случаях можно вывести это значение на график. Для этого вам понадобится AnimationCurve . Пример кода:

Посмотреть график можно, нажав на поле кривой в инспекторе:

Создание графика для отладки игры на Unity

Кеширование объектов

Ещё одна заметка с курсов создания компьютерных игр: старайтесь кешировать все объекты, с которыми вы часто работаете. Например, в скрипте вы часто обращаетесь к какому-либо компоненту через GetComponent . Вместо этого можно создать поле для этого компонента и присвоить его в методе Start . После этого можно будет обращаться напрямую к компоненту через это поле. Такое решение снизит нагрузку, так как операции GetComponent , Find , FindGameObjectsWithTag и т. д. сильно ресурсозатратны.

Создание пресетов для компонентов

Для каждого компонента можно создавать собственные пресеты. Пресет позволяет сохранить текущие настройки компонента и присвоить их другому компоненту того же типа. Пресеты хранятся в виде отдельных файлов.

Кнопка пресетов в компоненте Unity

Меню пресетов, которые помогут облегчить процесс разработки на Unity

Программная пауза

Снова про отладку, которая пригождается и разработчикам игр при обучении, и в дальнейшей работе. Поставить игру на паузу можно не только кнопкой в редакторе, но и через код. Для этого нужно установить поле EditorApplication.isPaused в значение true . Пригодиться это может во время отладки, когда нужно остановить игру прямо после какой-нибудь ошибки, чтобы детальнее её изучить.

Удобный импорт файлов из Photoshop в Unity

Установив пакет 2D PSD Importer, можно упростить процесс переноса изображений во время разработки игры из фотошопа в Unity. Этот пакет принимает файлы с расширением .psb . При импорте такого файла он автоматически создаёт в объекте все дочерние изображения, которые соответствуют слоям из фотошопа. Также он создаёт группу объектов с отсортированными по слоям компонентами SpriteRenderer .

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

Конечно, это далеко не все хитрости. Но уже с ними вы сможете облегчить себе процесс разработки. А узнать ещё больше фишек и профессионально освоить разработку игр на Unity можно на Факультете разработки игр от GeekBrains, где опытные преподаватели научат вас создавать игры с нуля и в том числе разберут особенности различных инструментов. Первые 6 месяцев обучения бесплатно.

Фиксированное расположение vs автоматическое расположение

Существует два разных режима для расположения и организации GUI: Fixed (фиксированный) и Automatic (автоматический). Во всех примера использования UnityGUI, представленных до сих пор, было фиксированное расположение. Для использования автоматического, пишите GUILayout вместо GUI при вызове функций контролов. Вы не обязаны использовать только один режим расположения вместо другого и вы можете использовать оба режима одновременно в одной и той же функции OnGUI() .

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

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

  • GUILayout is used instead of GUI
  • Функция Rect() не требуется для контролов с автоматическим расположением

Выстраивание контролов

В зависимости от используемого режима расположения, существует различные подходы к контролированию позиционирования и группирования контролов. При фиксированном расположении, вы можете поместить разные контролы в группы ( Groups ). При автоматическом расположении, вы можете разместить различные контролы в областях ( Areas ), горизонтальных группах ( Horizontal Groups ) и вертикальных группах ( Vertical Groups ).

Фиксированное расположение - группы

Группы - это соглашение, доступное в фиксированном режиме расположения. Они позволяют вам определять области на экране, которые содержат несколько контролов. Вы определяете, какие контролы будут внутри группы с помощью функций GUI.BeginGroup() и GUI.EndGroup() . Все контролы внутри группы будет размещены на основе левого верхнего угла группы вместо левого верхнего угла экрана. Таким образом, если вы в реальном времени измените позицию группы, сохранятся относительные позиции всех контролов в группе.

Например, очень просто центрировать несколько контролов на экране.

Пример выше центрирует контролы, независимо от разрешения экрана

Пример выше центрирует контролы, независимо от разрешения экрана

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

Вы можете вкладывать группы друг в друга для создания эффектов обрезания содержимого

Вы можете вкладывать группы друг в друга для создания эффектов обрезания содержимого

Автоматическое расположение - области

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

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

Учтите, что ширина контролов с видимыми элементами (такими как кнопки и Box’ы), расположенных внутри области, будет растягиваться до полного заполнения длины области.

Автоматическое расположение - горизонтальные и вертикальные группы

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

Как и при работе с другими контролами расположения, вы можете вызывать отдельные функции для старта и окончания этих групп. Для этого можно использовать функции GUILayout.BeginHoriztontal() , GUILayout.EndHorizontal() , GUILayout.BeginVertical() , и GUILayout.EndVertical() .

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

Три контрола, выстроенные в горизонтальных и вертикальных группах

Три контрола, выстроенные в горизонтальных и вертикальных группах

Использование GUILayoutOptions для определения некоторых контролов

Вы можете использовать GUILayoutOptions для переназначения некоторых параметров автоматического расположения. Для этого вам нужно передать опции в качестве последних аргументов GUILayout контролов.

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

Для полного списка возможных опций GUILayoutOptions, пожалуйста, простите страницу справки по классу GUILayoutOption.

Читайте также: