Узлы и Сцены

В Обзор ключевых концепций 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

In an empty scene, the Scene dock on the left shows several options to add a root node quickly. "2D Scene" adds a Node2D node, "3D Scene" adds a Spatial node, and "User Interface" adds a Control node. These presets are here for convenience; they are not mandatory. "Other Node" lets you select any node to be the root node. In an empty scene, "Other Node" is equivalent to pressing the "Add Child Node" button at the top-left of the Scene dock, which usually adds a new node as a child of the currently selected node.

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

Press the "Add Child Node" button or "Other Node" to create a root node.

../../_images/nodes_and_scenes_02_scene_dock.png

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

../../_images/nodes_and_scenes_03_create_node_window.png

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

../../_images/nodes_and_scenes_04_create_label_window.png

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

../../_images/nodes_and_scenes_05_editor_with_label.png

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

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

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

Перейдите на вкладку Inspector (справа от окна просмотра). Щелкните внутри поля под свойством 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

Запуск сцены

Everything's ready to run the scene! Press the Play Scene button in the top-right of the screen or press F6 (Cmd + R on macOS).

../../_images/nodes_and_scenes_09_play_scene_button.png

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

../../_images/nodes_and_scenes_10_save_scene_popup.png

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

../../_images/nodes_and_scenes_11_save_scene_as.png

Примечание

Диалоговое окно "Save Scene As" (Сохранить сцену как), как и другие диалоговые окна файлов в редакторе, позволяет сохранять файлы только внутри проекта. Путь res:// в верхней части окна представляет корневой каталог проекта и расшифровывается как "путь к ресурсу". Дополнительные сведения о путях к файлам в Godot см. в разделе Файловая система.

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

../../_images/nodes_and_scenes_12_final_result.png

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

Примечание

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

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

To run our test scene, we used the Play Scene button. Another button next to it allows you to set and run the project's main scene. You can press F5 (Cmd + B on macOS) to do so.

../../_images/nodes_and_scenes_13_play_button.png

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

../../_images/nodes_and_scenes_14_main_scene_popup.png

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

../../_images/nodes_and_scenes_15_select_main_scene.png

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

Примечание

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

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