Узлы и Сцены

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

Узлы

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

../../_images/nodes_and_scenes_nodes.png

Все узлы имеют следующие атрибуты:

  • Имя.

  • Редактируемые свойства.

  • Они получают обратные вызовы для обновления каждого кадра.

  • Вы можете расширить их новыми свойствами и функциями.

  • Вы можете добавить их в другой узел в качестве дочерних.

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

../../_images/nodes_and_scenes_character_nodes.png

Сцены

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

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

../../_images/nodes_and_scenes_3d_scene_example.png

По сути, редактор Godot - это ** редактор сцен**. В нем есть множество инструментов для редактирования 2D- и 3D-сцен, а также пользовательских интерфейсов. Проект Godot может содержать столько сцен, сколько вам необходимо. Движку же требуется только одна сцена - ** главная сцена**. Это сцена, которую Godot загрузит первой, когда вы или игрок запустите игру.

Помимо того, что сцены действуют как узлы, они обладают следующими атрибутами:

  1. Они всегда имеют один корневой узел, как "Персонаж" в нашем примере.

  2. Вы можете сохранить их на вашем жестком диске и загрузить позже.

  3. Вы можете создать столько экземпляров сцены, сколько захотите. В вашей игре может быть пять или десять персонажей, созданных на основе сцены "Персонаж".

Создание вашей первой сцены

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

../../_images/nodes_and_scenes_01_empty_editor.png

В пустой сцене (без корневого узла) панель сцены содержит несколько способов быстрого добавления корневого узла в сцену. "2D Scene" добавит узел Node2D, "3D Scene" добавит узел Spatial, "User Interface" добавит узел Control, а "Other Node" допускает выбор вами любого узла (так что он эквивалентен нажатию кнопки "Add Child Node" (Добавить дочерний узел)). Вы также можете нажать на значок-звёздочку, чтобы переключить отображение на экране ваших избранных узлов.

Мы собираемся добавить в нашу сцену узел Label. Его функция заключается в отрисовке текста на экране.

Для создания узла нажмите кнопку "Добавить дочерний узел" в верхней левой части панели Сцены. Эта кнопка добавляет выбранный узел в качестве дочернего узла текущего выбранного узла или же, в случае с пустой сценой, — в качестве корневого.

../../_images/nodes_and_scenes_02_scene_dock.png

Откроется диалоговое окно "Создать узел", в котором отобразится длинный список доступных узлов.

../../_images/nodes_and_scenes_03_create_node_window.png

Выберите узел Метка. Вы можете ввести его имя, чтобы отфильтровать его по списку.

../../_images/nodes_and_scenes_04_create_label_window.png

Щелкните на узле Label, чтобы выделить его, и нажмите кнопку Create в нижней части окна.

../../_images/nodes_and_scenes_05_editor_with_label.png

Многое происходит, когда вы добавляете первый узел сцены. Сцена изменится на 2D-пространство, поскольку Метка является 2D-узлом. Метка обозначается выбранной в верхнем левом углу окна просмотра. Узел появится во вкладке Сцена слева, а свойства узла — во вкладке Инспектор справа.

Изменение свойств узла

Следующим шагом будет изменение свойства Label's "Text". Давайте изменим его на "Hello World".

Перейдите во вкладку Инспектор (справа от окна просмотра). Щелкните внутри поля под свойством Text и введите «Hello World».

../../_images/nodes_and_scenes_06_label_text.png

Вы увидите, как текст отрисовывается в окне просмотра по мере ввода.

Узел Label можно переместить в окне просмотра, выбрав инструмент перемещения на панели инструментов.

../../_images/nodes_and_scenes_07_move_tool.png

Когда метка выделена, нажмите и перетащите в любом месте области просмотра, чтобы переместить ее в центр ограниченного прямоугольником вида.

../../_images/nodes_and_scenes_08_hello_world_text.png

Запуск сцены

Все готово для запуска сцены! Нажмите кнопку Play Scene в правом верхнем углу экрана или нажмите F6.

../../_images/nodes_and_scenes_09_play_scene_button.png

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

../../_images/nodes_and_scenes_10_save_scene_popup.png

Нажмите кнопку Да, и в появившемся браузере файлов нажмите кнопку Сохранить, чтобы сохранить его как "Label.tscn".

../../_images/nodes_and_scenes_11_save_scene_as.png

Примечание

Диалоговое окно «Сохранить сцену как», как и другие диалоговые окна файлов в редакторе, позволяет сохранять файлы только внутри проекта. Путь ''res://'' в верхней части окна представляет корневой каталог проекта и расшифровывается как "путь к ресурсу". Дополнительные сведения о путях к файлам в Godot см. в разделе :ref:'doc_filesystem'.

Приложение должно открыться в новом окне и отобразить текст «Hello World».

../../_images/nodes_and_scenes_12_final_result.png

Закройте окно или нажмите F8, чтобы выйти из запущенной сцены.

Примечание

Если это сразу не сработало, и у вас есть hiDPI дисплей хотя бы на одном из мониторов, зайдите в Project -> Project Settings -> Display -> Window и включите Allow Hidpi в разделе Dpi.

Настройка главной сцены

Для запуска нашей тестовой сцены мы использовали кнопку Play Scene. Другая кнопка рядом с ней позволяет установить и запустить главную сцену проекта. Для этого можно нажать F5.

../../_images/nodes_and_scenes_13_play_button.png

Появится всплывающее окно, предлагающее выбрать основную сцену.

../../_images/nodes_and_scenes_14_main_scene_popup.png

Нажмите кнопку «Выбрать» и в появившемся диалоговом окне дважды щелкните файл Label.tscn.

../../_images/nodes_and_scenes_15_select_main_scene.png

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

Примечание

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

В следующей части мы обсудим еще одну ключевую концепцию в играх и в Godot: создание экземпляров сцены.