Баннер мобильный (1) Пройти тест

Префаб

Глоссарий

27 марта 2023

Поделиться

Скопировано

Содержание

    Префаб (prefab) — это шаблон для объекта в игровом движке Unity. С помощью префабов можно создать «образец» предмета с определенными свойствами, а потом использовать такие предметы на всей игровой сцене. Если изменить префаб, то изменятся все объекты, созданные на его основе.

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

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

    Шаблоны в Unity называются ассетами (assets), поэтому иногда можно услышать определение, что префаб — это ассет для игрового объекта. Оно тоже верное.

    Кто пользуется префабами и для чего они нужны

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

    Префабы нужны:

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

    Как работают префабы

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

    В Unity объект хранится в сущности под названием GameObject. У нее есть компоненты, значения которых можно изменять, и разнообразные настройки.

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

    Отличие от ассета

    В Unity также есть понятие файлового ассета — это файл, в котором хранится шаблон для чего-либо, в том числе для объекта, текстуры или чего-то еще. Если изменить ассет, изменения точно так же применятся ко всем объектам, которые им пользуются. Их обычно не создают «изнутри» движка, а импортируют извне: из визуальных, звуковых и 3D-редакторов.

    Файловый ассет и префаб — похожие понятия, но не идентичные. У них разная функциональность и свойства: например, к ассету нельзя добавлять компоненты. Префабы используют для создания непосредственно GameObject и его свойств, а ассеты — более широкое понятие: они могут включать в себя изображения, текстуры, звуки, трехмерные модели и другие файлы. С их помощью можно добавлять что угодно, что может использоваться в игре, — если Unity поддерживает соответствующий формат.

    Как создавать префабы

    Префабы создаются в редакторе движка Unity — в нем происходит большая часть работы со сценой. Нужно выбрать в меню редактора пункт Asset -> Create Prefab, и создастся «пустой» префаб. В него можно перетащить любой объект со сцены — и этот объект станет префабом, «шаблоном». В нем сохранятся не только свойства, но и вложенные объекты — они тоже сделаются частью шаблона. Объект, из которого вы создали префаб, станет его экземпляром и останется на сцене, а не исчезнет.

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

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

    Как редактировать префабы

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

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

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

    • Select — выделяет префаб, от которого унаследован объект. Позволяет не искать нужный шаблон в списке, что удобно, если префабов много;
    • Revert — «откатывает» изменения, сделанные в конкретном экземпляре, до стандартных параметров префаба;
    • Apply — применяет изменения, сделанные в конкретном объекте, ко всему префабу. Соответственно, изменяются все экземпляры.

    Как заменять префабы

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

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

    Как редактировать экземпляр префаба

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

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

    Для отдельного объекта можно:

    • добавить или удалить компонент;
    • изменить значение какого-либо свойства;
    • добавить дочерний объект.

    Удалять имеющиеся дочерние объекты, которые входят в начальный шаблон, нельзя, равно как и переопределять «родителя» для экземпляров префаба. Но дочерние элементы можно отключать — обычно этого достаточно.

    Группировка префабов

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

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

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

    Как начать пользоваться префабами

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

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

    Поделиться

    Скопировано

    0 комментариев

    Комментарии