Обзор Prefab – Актер, связанный со скриптом, который может быть сохранен в пакете и поставлен на уровень.
Весьма часто, создавая уровень, Вам нужно создать некоторое сочетание Актеров, и затем многократно использовать это сочетание в том же самом или других уровнях. Примером мог бы быть факел, который состоит из статического меша, света и системы частиц. Prefab позволяет Вам создавать такую коллекцию, и затем сохранять ее в пакете как Prefab. Вы можете выбрать Prefab в Главном Браузере, и добавлять его несколько раз на уровень.
Особенность Prefab в Unreal Engine 3 - то, что Вы можете вернуться и обновить Prefab, и те изменения, которые будут изменены, применятся ко всем экземплярам класса этого Prefab. Например, предположим, что у Вас есть Prefab, который содержит желтый источник света, и Вам нужен еще Prefab с зеленым светом, только чтобы остальные имели все еще желтый свет (для этого просто меняете цвет и не сохраняете Prefab). Вы можете изменять, или даже удалять, части заранее приготовленного Prefab, чтобы использовать его по-разному, но также можно и обновить Prefab.
Типовые Prefab также поддерживает последовательности Кисмет. В приведенном выше примере, Вы можете добавить сценарий Кисмет, например, чтобы Вы могли потушить факел особым оружием. Вручную уйдет очень много времени - создавать каждый факел с соответствующей последовательностью в Кисмет; но очень просто сделать с Prefab.
Создаем Prefab
Чтобы создать Prefab, первое, что Вам нужно сделать - собрать нужных актеров на сцене. Затем, выбрав их всех, щелкните правой кнопкой мыши и выберите «Create Prefab» из контекстного меню. Вам будет предложено ввести имя пакета, дополнительно имя группы, и имя нового Prefab. Далее Вас спросит, хотите ли Вы заменить выбранные Актеры на Prefab? Появится большой актер Prefab, который будет состоять из всех выбранных объектов .
Теперь Вы сможете видеть новый Prefab в Главном браузере . Prefab отображаться в виде миниатюр показывая Prefab на уровне, когда Вы его создавали. Взята позиция камеры в окне перспективы редактора, когда Prefab был создан, так что стоит найти лучший вид на объекты, прежде чем создавать Prefab.
Размещение Prefab Instance (составные части Prefab)
Чтобы разместить Prefab Instance, просто выберите его в Главном браузере, щелкните правой кнопкой мыши на сцене и выберите Add Prefab:. Он должен появиться в уровне. Вы будете также видеть, что ко всем экземплярам класса Prefab привязан Агент PrefabInstance. Он похож на красный значок P в квадрате (P^2 J ), и представляет начало координат Prefab.
Это используется для того, чтобы следить за Prefab, за Актерами, которые используется в этом Prefab.
Когда Вы создаете Prefab, информация между Актерами в пределах Prefab сохраняется. Так, если Вы прикрепили Актера на другого Актера в Prefab,он будет добавлен каждый раз, когда Вы помещаете Prefab. Соответственно, любой Актер не связанный с Prefab не будет добавляться.
Редактирование Prefab
По умолчанию, при выборе любого актера, входящего в Prefab, выбирается все его составные части. Это делает работу с Prefab, так как Вы можете перемещать его как единое целое. Тем не менее, иногда нужно изменить один, составляющий Prefab, Актер. Для этого отожмите кнопку Lock Prefab на верхней панели, которая выглядит как буква P.
Обновление Prefab
Prefab сохраняется после того, как Вы создали его, изменяя составляющую часть Prefab, для сохранения нужно нажать ПКМ на Агент PrefabInstance и выбрать Update Prefab From This Instance. Скопируются свойства выбранной и измененной части для Prefab. После, изменятся все эти измененные части Prefab на уровне. Если Вы удалили Актера, составляющий Prefab, то после обновления Prefab, все Prefab будут без этого Актера. Если Вы желаете добавить нового Актера к Prefab, выберите PrefabInstance и любой Актер, который желаете добавить, и обновите. Этот Актер будет добавлен к Prefab. Также обновится миниатюра Prefab, когда Вы обновляете Prefab.
Как отмечено выше, если Вы измените свойство актера или удалитедобавите, составляющее Prefab, то ни чего не изменится, пока Prefab не будет обновлен. BSP и Объемы (Volumes) не будут работать, хотя всегда будут копироваться с Prefab.
Когда Вы открываете карту, которая содержит Prefab, который был обновлен, так как карта была сохранена, она автоматически обновит все составляющие части того Prefab в карте.
Добавляем последовательности Кисмет в Prefab
Prefab могут содержать созданные сценарии Кисмет. Когда Вы создаете или обновляете Prefab, он проверяет последовательности уровня, на Актеров в данном Prefab. Он будет искать последовательность в иерархии, которая содержит все Актеры, т.е. он может выбрать самую высшую последовательность и затем спросит - эта та Последовательность, для этого Prefab
Если Вы отвечаете «Да», он выполнит дополнительную проверку, что нет никакой информации в пределах этой Последовательности на Актеров, которые не входит в Prefab. Если лишнее есть, то отобразится предупреждение и Последовательность не будет включена в Prefab.
Когда Вы помещаете Prefab на уровень, который содержит последовательность Кисмет, будет создана подпоследовательность Кисмет от верхнего уровня под названием «Prefab». И у каждого класса Prefab в уровне, будет своя собственная копия связанной последовательности Кисмет. Когда Prefab обновлен, последовательность Кисмет для каждого Prefab полностью заменяется на последовательность Кисмет сохраняемого Prefab.
Советы по Prefab
При выборе актера, который является частью Prefab, Вы можете нажать Shift-P, чтобы выбрать всех Актеров, которые являются частью этого Prefab. Вы также можете сделать это, выбрав в контекстном меню PrefabInstance «Select All Actors In Prefab(s)» вариант.
Если Вы хотите преобразовать выбранный Prefab в простые Актеры, т.е. изменения в Prefab не будут влиять их больше, нужно выбрать из контекстного меню PrefabInstance «Convert PrefabInstance To Normal Actors».
В PrefabInstance, Вы можете выбрать «Open Sequence For PrefabInstance In Kismet», чтобы открыть Кисмет и прямо в последовательности этого Prefab.
Чтобы полностью сбросить изменения в выбранном Prefab (то есть, удалить всех Актеров и заменить на новый Prefab), можно нажать ПКМ на PrefabInstance и выбирать «Reset Instance From Prefab».