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 экземпляра шаблона в качестве префикса имени ноды:
if gui.pick_node(gui.get_node("button_1/button"), x, y) then
-- Какие-либо действия...
end
Не существует ноды, соответствующей самому экземпляру шаблона. Если требуется корневая нода для экземпляра, добавьте ее в шаблон.
Если скрипт связан со GUI-сценой шаблона, он не является частью дерева нод экземпляра. Можно прикрепить один единственный скрипт к каждой GUI-сцене, чтобы логика скрипта располагалась в GUI-сцене, в которую инстанцируются шаблоны.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB