---
title: GUI-нода Templates
brief: This manual explains the Defold GUI template system that is used to create reusable visual GUI components based on shared templates or 'prefabs'.
---
# GUI-нода Templates
GUI-нода Template предоставляет мощный механизм для создания многократно используемых компонентов GUI на основе общих шаблонов или "префабов". В этом руководстве объясняется, что это за функция и как ее использовать.
GUI-шаблон --- это GUI-сцена, которая инстанцируется, нода за нодой, в другую GUI-сцену. Любые значения свойств нод исходного шаблона могут быть переопределены.
## Создание шаблона
GUI-шаблон --- это обычная GUI-сцена, поэтому он создается так же, как и любая другая GUI-сцена. Кликните ПКМ в каком-либо расположении в панели *Assets* и выберите New... ▸ Gui.

Создайте шаблон и сохраните его. Следует заметить, что ноды экземпляра будут располагаться относительно начала координат, поэтому целесообразно создать шаблон в позиции 0, 0, 0.
## Создание экземпляров из шаблона
На основе образца можно создать любое количество экземпляров. Создайте или откройте GUI-сцену, в которой нужно разместить шаблон, затем кликните ПКМ в секции *Nodes* в *Outline* и выберите Add ▸ Template.

Задайте свойству *Template* файл шаблона GUI-сцены.
Можно добавить любое количество шаблонных экземпляров, и для каждого экземпляра можно переопределить свойства каждой ноды и изменить позицию, цвет, размер, текстуру и так далее.

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

Любая нода, имеющая переопределенные свойства, также окрашивается в синий цвет в *Outline*:

Экземпляр шаблона отображается в виде сворачиваемой записи в представлении *Outline*. Однако важно отметить, что этот элемент в Outline *не является нодой*. Экземпляр шаблона также не существует в рантайме, но все ноды, которые являются частью этого экземпляра, существуют.
Ноды, являющиеся частью экземпляра шаблона, автоматически именуются с префиксом и слэшем (`"/"`), прикрепленным к их *Id*. Префикс --- это *Id*, установленный в экземпляре шаблона.
## Изменение шаблонов в рантайме
Скрипты, которые манипулируют или запрашивают ноды, добавленные через механизм шаблонов, должны учитывать только именование нод экземпляра и включать *Id* экземпляра шаблона в качестве префикса имени ноды:
```lua
if gui.pick_node(gui.get_node("button_1/button"), x, y) then
-- Какие-либо действия...
end
```
Не существует ноды, соответствующей самому экземпляру шаблона. Если требуется корневая нода для экземпляра, добавьте ее в шаблон.
Если скрипт связан со GUI-сценой шаблона, он не является частью дерева нод экземпляра. Можно прикрепить один единственный скрипт к каждой GUI-сцене, чтобы логика скрипта располагалась в GUI-сцене, в которую инстанцируются шаблоны.