Что такое префаб в юнити

Префабы (Prefabs)

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Unity’s Prefab system allows you to create, configure, and store a GameObject complete with all its components, property values, and child GameObjects as a reusable Asset. The Prefab Asset acts as a template from which you can create new Prefab instances in the Scene.

When you want to reuse a GameObject configured in a particular way – like a non-player character (NPC), prop or piece of scenery – in multiple places in your Scene, or across multiple Scenes in your Project, you should convert it to a Prefab. This is better than simply copying and pasting the GameObject, because the Prefab system allows you to automatically keep all the copies in sync.

Any edits that you make to a Prefab Asset are automatically reflected in the instances of that Prefab, allowing you to easily make broad changes across your whole Project without having to repeatedly make the same edit to every copy of the Asset.

You can nest Prefabs inside other Prefabs to create complex hierachies of objects that are easy to edit at multiple levels.

However, this does not mean all Prefab instances have to be identical. You can override settings on individual prefab instances if you want some instances of a Prefab to differ from others. You can also create variants of Prefabs which allow you to group a set of overrides together into a meaningful variation of a Prefab.

Some common examples of Prefab use include:

2018–07–31 Page amended with limited editorial review

Источник

Префабы (Prefabs)

Довольно удобно работать с GameObject в сцене, добавляя компоненты и изменяя их значения на нужные вам в инспекторе. Однако, это может создать ряд проблем в таких случаях, когда вы работаете над созданием NPC, объектом или предметом, который многократно встречается в сцене. Вы, конечно, можете просто скопировать эти объекты для создания дубликатов, но все они будут редактироваться независимо друг от друга. Обычно вы желаете, чтобы все экземпляры отдельно взятого объекта имели одинаковые значения свойств, чтобы при редактировании одного такого объекта в сцене вам не пришлось повторно вносить те же изменения и во все остальные копии.

Использование префабов

Вы можете создать префаб, выбрав Asset > Create Prefab и перетащив объект со сцены в “пустой” префаб, появившийся в проекте. После чего можно создавать экземпляры префаба просто перетаскивая его из окна Project на сцену. Имена объектов-экземпляров префабы, будут подсвечиваться синим в окне Hierarchy (имена обычных объектов имеют чёрный цвет).

Как уже упоминалось выше, изменения в префабе автоматически применятся ко всем её экземплярам, однако вы можете изменять и отдельные экземпляры. Это полезно например в случае, когда вы желаете создать несколько похожих NPC, но с внешними различиями, чтобы добавить реалистичности. Чтобы было чётко видно, что свойство в экземпляре префаба изменено, оно показывается в инспекторе жирным шрифтом (если к экземпляру префаба добавлен совершенно новый компонент, то все его свойства будут написаны жирным шрифтом).

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнитиMesh Renderer на экземпляре префаба с переопределённым свойством “Cast Shadows”

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

Редактирование префаба из его экземпляров

Инспектор экземпляра префаба содержит три кнопки, которые у обычных объектов отсутствуют: Select (Выделить), Revert (Отменить) и Apply (Применить).

Кнопка Select выделяет файл префаба, из которого был получен данный экземпляр. Это позволяет быстро найти и отредактировать оригинальный префаб, применяя изменения ко всем его экземплярам. Однако, вы также можете сохранить переопределённые свойства из экземпляра в сам оригинальный префаб с помощью кнопки Apply (изменённые значения положения и вращения трансформации не применяются по очевидным причинам). Это позволяет эффективно редактировать все экземпляры через любой из них, и это быстрый и правильный способ вносить глобальные изменения. Если вы экспериментируете с переопределением свойств, но в итоге решаете, что изначальные свойства (заданные в префабе) для вас предпочтительнее, то вы можете отменить все сделанные переопределения с помощью кнопки Revert, вернув экземпляр в изначальное состояние.

Источник

Улучшение работы с префабами

В версии 2018.3 мы улучшили процесс работы с префабами, включая вложенные префабы, варианты префабов и режим префабов.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

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

Улучшения внесены на основе опросов более 150 корпоративных клиентов, многочисленных интервью, нескольких тестов удобства использования и двух мероприятий — Game Jam. Нашей долгосрочной целью было не только внедрение поддержки вложенных префабов, но и переосмысление основных рабочих процессов с префабами, чтобы разные члены команды могли одновременно эффективно изменять префабы.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Повышенная гибкость

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

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

Повышение продуктивности

Это облегчает следующие задачи для команд любых размеров:

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Гибкие возможности повышают эффективность

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

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Избегайте отнимающих время ошибок

Основа новых рабочих процессов — режим префабов — позволяет вам редактировать префабы отдельно от остального проекта.

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Узнайте, как члены команды Unity R&D Николин Ог и Стин Кьерболл отправились на поиски открытий: проведя тесты, опросы и пообщавшись напрямую со 150 клиентами, они собрали ценные данные, которые помогли фундаментальным образом улучшить процессы работы с префабами.

Смотрите наши официальные доклады на Unite и GDC

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

GDC 2019 — представляем новый процесс работы с префабами

Запись краткого доклада с GDC 2019, где мы в общем рассказываем о префабах в Unity 2019. Технический евангелист Чиро Континисио (Ciro Continisio) расскажет об основных особенностях новых методов организации префабов (например, вложении, вариации и режиме редактирования с изоляцией префаба). Кроме того, он расскажет о новых элементах интерфейса и об их смысле.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Unite LA 2018 — Представляем новый процесс работы с префабами

Ветеран индустрии разработки игр и технический евангелист Чиро Континсио объясняет основные аспекты нового процесса работы с префабами (например, вложение, варианты, режим изолированного редактирования). Также он расскажет о новых элементах интерфейса и причинах их внедрения.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Unite LA 2018 — Улучшение процессов работы с префабами: Новый способ работы с префабами

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Unite LA 2018 — Улучшение процессов работы с префабами для интерфейсов: Новый способ работы с префабами

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Unite Berlin 2018 — Улучшение процессов работы с префабами

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Unite Berlin 2018 — Технические детали новой системы префабов

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

О планах развития на Unite Berlin 2018

Узнайте о планах Unity по выпуску новых функций и улучшений в цикле 2018 года. От Next-Level Rendering до системе задач C#, машинного обучения, новых платформ и многого другого. Вы узнаете, когда можно ожидать добавления новых возможностей и функционала, а также сможете задать вопросы.

Источник

Префабы (Prefabs)

Довольно удобно работать с GameObject в сцене, добавляя компоненты и изменяя их значения на нужные вам в инспекторе. Однако, это может создать ряд проблем в таких случаях, когда вы работаете над созданием NPC, объектом или предметом, который многократно встречается в сцене. Вы, конечно, можете просто скопировать эти объекты для создания дубликатов, но все они будут редактироваться независимо друг от друга. Обычно вы желаете, чтобы все экземпляры отдельно взятого объекта имели одинаковые значения свойств, чтобы при редактировании одного такого объекта в сцене вам не пришлось повторно вносить те же изменения и во все остальные копии.

Fortunately, Unity has a Prefab asset type that allows you to store a GameObject object complete with components and properties. The prefab acts as a template from which you can create new object instances in the scene. Any edits made to a prefab asset are immediately reflected in all instances produced from it but you can also override components and settings for each instance individually.

Использование префабов

Вы можете создать префаб, выбрав Asset > Create Prefab и перетащив объект со сцены в “пустой” префаб, появившийся в проекте. После чего можно создавать экземпляры префаба просто перетаскивая его из окна Project на сцену. Имена объектов-экземпляров префабы, будут подсвечиваться синим в окне Hierarchy (имена обычных объектов имеют чёрный цвет).

Как уже упоминалось выше, изменения в префабе автоматически применятся ко всем её экземплярам, однако вы можете изменять и отдельные экземпляры. Это полезно например в случае, когда вы желаете создать несколько похожих NPC, но с внешними различиями, чтобы добавить реалистичности. Чтобы было чётко видно, что свойство в экземпляре префаба изменено, оно показывается в инспекторе жирным шрифтом (если к экземпляру префаба добавлен совершенно новый компонент, то все его свойства будут написаны жирным шрифтом).

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнитиMesh Renderer на экземпляре префаба с переопределённым свойством “Cast Shadows”

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

Редактирование префаба из его экземпляров

Инспектор экземпляра префаба содержит три кнопки, которые у обычных объектов отсутствуют: Select (Выделить), Revert (Отменить) и Apply (Применить).

The Select button selects the prefab asset from which the instance was generated. This allows you to edit the main prefab and thereby change all its instances. However, you can also save overridden values from an instance back to the originating prefab using the Apply button (modified Transform position values are excluded for obvious reasons). This effectively lets you edit all instances (except those which override the value changed) via any single instance and is a very quick and convenient way to make global changes. If you experiment with overriding properties but then decide you preferred the default values, you can use the Revert button to realign the instance with its prefab.

Источник

Пишем арканоид на Unity. Поведение блоков, префабы и дизайн уровней

Авторизуйтесь

Пишем арканоид на Unity. Поведение блоков, префабы и дизайн уровней

В этой статье мы продолжаем серию уроков о написании простой игры на Unity — классического арканоида. Использовать будем только 2D инструменты, предоставляемые нам движком. В каждой из статей мы затронем один из аспектов написания игры, а в этой настроим поведение игровых блоков и создадим префабы.

Где мы остановились?

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

Прилагаем список всех уроков:

Превью результата

Ну и по традиции — посмотрим на игру, которая должна получиться у нас по итогам всей серии.

А вот игра, которую мы напишем в этой статье.

Скрипт для блока

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

Не забудем и о том, что количество выдерживаемых ударов и заработанные очки могут меняться в зависимости от цвета блока. Исходя из этого, блок должен иметь три переменные:

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

Итак, создадим новый скрипт под название BlockScript, объявим наши переменные и проинициализируем нулем переменную, отвечающую за количество принятых ударов:

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

Для того, чтобы воспользоваться этой функцией, мы должны пометить шар специальным тегом. В редакторе Unity на вкладке Hierarchy выберите мяч, перейдите в окно Inspector и найдите поле Tag. В данный момент объект не имеет тега, а потому в этом поле значится Untagged. Кликните по нему и выберите Add Tag.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

После этого откроется новый интерфейс:

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

В этой статье мы сосредоточимся на свойстве Element 0, которое определят название тега. Свойству Size задайте 2.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Отлично. Теперь заново в окне Inspector кликните по полю Tag и в списке кликните на добавленный нами тег Ball.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Откройте ранее созданный нами скрипт BlockScript. Переопределим метод OnCollisionEnter2D, в котором будем проверять тег объекта, с которым столкнулся наш блок.

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

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

Создание префабов

Мы полностью написали механику блоков. Настало время заполнить наш уровень. Так как для этого мы будем использовать много блоков, то самое время создать префабы.

Префаб — это один из типов ресурсов, предназначений для многократного использования и хранящийся в Project View. Префаб может быть вставлен в любое количество сцен и многократно в одну сцену. Когда префаб добавляется в сцену, создаётся его экземпляр. Все экземпляры являются ссылками на оригинальный префаб и фактически его клонами. Независимо от того, как много экземпляров в проекте, при изменении префаба изменяются соответственно и все его экземпляры.

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

Давайте рассмотрим это на примере. Переименуйте объект Block в Blue Block. Затем создайте новую папку внутри Assets под названием Prefabs. Перетащите Blue Block в новую папку.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Как вы могли заметить, иконка кубика в верхней части вкладки Inspector теперь стала голубенькой, также как и название блока во вкладке Hierarchy. Это значит, что был создан префаб. Довольно просто, не так ли? Отныне, выбрав этот префаб и изменив у него какое-либо значение, обновятся параметры у всех его экземпляров.

Давайте создадим еще один экземпляр префаба: перетащите Blue Block из папки Prefabs во вкладку Hierarchy. Теперь у нас два синих блока, но оба находятся на одной и той же позиции.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

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

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Нажмите кнопку Play и проверьте работу игры.

Пересоздание префабов

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

В конце концов мы должны создать четыре различных префаба.

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Для того, чтобы игра была более интересной, измените количество ударов для уничтожения блока (параметр Hits To Kill) таким образом:

Добавьте несколько различных блоков на сцену и запустите игру.

Дизайн уровней

Итак, давайте заполним наш уровень. Используя префабы, добавьте требуемое количество различных блоков. Чтобы не засорять проект, создайте во вкладке Hierarchy пустой объект Blocks, а внутри него еще четыре пустых объекта — по одному на каждый цвет. Отсортируйте все существующие блоки по цветам таким образом:

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

На том этапе игра практически готова, вся игровая механика написана. У вас должно получиться что-то вроде такого:

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Набор очков и жизни

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

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

У нас должен быть метод, который будет добавлять необходимое количество очков:

Этот метод получает в качестве параметра некоторое количество очков. Но откуда мы будем брать его?

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

Теперь, когда платформа имеет свой тег, перейдем к сценарию блока BlockScript. Давайте изменим метод OnCollisionEnter2D, в котором найдем нашу платформу при помощи метода FindGameObjectsWithTag и вызовем метод SendMessage, который позволяет выполнить функцию из другого скрипта. Выполнять будем метод addPoints.

Обратим внимание на то, что метод FindGameObjectsWithTag возвращает массив игровых объектов, а т.к. у нас ровно один объект с тегом Player, то 0-ой элемент и будет нашей платформой.

Измените количество очков (параметр Points) в каждом префабе. Например, по такому принципу:

Что такое префаб в юнити. Смотреть фото Что такое префаб в юнити. Смотреть картинку Что такое префаб в юнити. Картинка про Что такое префаб в юнити. Фото Что такое префаб в юнити

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

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

И, наконец, перейдем в BallScript и в момент, когда мячик падает за пределы игрового поля, вызовем метод TakeLife:

На этом все! Запустите игру и проверьте, что все работает правильно.

В следующей части

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

Источник

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

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