Узлы и Сцены

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

Узлы

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

../../_images/nodes_and_scenes_nodes.webp

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

  • Имя.

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

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

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

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

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

../../_images/nodes_and_scenes_character_nodes.webp

Сцены

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

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

../../_images/nodes_and_scenes_3d_scene_example.webp

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

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

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

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

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

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

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

../../_images/nodes_and_scenes_01_empty_editor.webp

В пустой сцене в панели Scene слева показано несколько вариантов быстрого добавления корневого узла. 2D Scene добавляет узел Node2D, 3D Scene добавляет узел Node3D, а User Interface добавляет узел Control. Эти пресеты приведены для удобства; они не являются обязательными. Other Node позволяет выбрать любой узел в качестве корневого. В пустой сцене Other Node эквивалентен нажатию кнопки Add Child Node в левом верхнем углу панели Scene, которая обычно добавляет новый узел в качестве дочернего узла текущего выбранного узла.

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

Нажмите кнопку Add Child Node или Other Node, чтобы создать корневой узел.

../../_images/nodes_and_scenes_02_scene_dock.webp

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

../../_images/nodes_and_scenes_03_create_node_window.webp

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

../../_images/nodes_and_scenes_04_create_label_window.webp

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

../../_images/nodes_and_scenes_05_editor_with_label.webp

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

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

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

Перейдите на вкладку Inspector справа от окна просмотра. Щелкните внутри поля под свойством Text и введите "Hello World".

../../_images/nodes_and_scenes_06_label_text.webp

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

См. также

Вы можете изменить любое свойство, приведённое в Инспекторе (Inspector), как мы сделали это с текстом (Text). Исчерпывающую информацию о панели Инспектор (Inspector) смотрите в Вкладка Инспектора.

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

../../_images/nodes_and_scenes_07_move_tool.webp

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

../../_images/nodes_and_scenes_08_hello_world_text.webp

Запуск сцены

Все готово для запуска сцены! Нажмите кнопку Run Current Scene в правом верхнем углу экрана или нажмите F6 (Cmd + R на macOS).

../../_images/nodes_and_scenes_09_play_scene_button.webp

Во всплывающем окне предлагается сохранить сцену, что необходимо для её запуска. Нажмите кнопку Save в файловом менеджере, чтобы сохранить её как label.tscn.

../../_images/nodes_and_scenes_10_save_scene_as.webp

Примечание

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

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

../../_images/nodes_and_scenes_11_final_result.webp

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

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

Для запуска тестовой сцены мы воспользовались кнопкой Run Current Scene. Еще одна кнопка рядом с ней, Run Project, позволяет установить и запустить основную сцену проекта. Для этого можно нажать F5 (Cmd + B на macOS).

../../_images/nodes_and_scenes_12_play_button.webp

Примечание

Запуск основной main scene (основная сцена) отличается от запуска *current scene (текущая сцена). Если вы столкнетесь с неожиданным поведением, проверьте, чтобы убедиться, что вы запускаете правильную сцену.

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

../../_images/nodes_and_scenes_13_main_scene_popup.webp

Нажмите кнопку Select и в появившемся диалоговом окне дважды щёлкните файл label.tscn.

../../_images/nodes_and_scenes_14_select_main_scene.webp

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

Примечание

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

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