Узлы и Сцены
В Обзор ключевых концепций Godot мы увидели, что игра на Godot представляет собой дерево сцен, и что каждая сцена представляет собой дерево узлов. В этом уроке мы расскажем о них немного побольше. Также вы создадите свою первую сцену.
Узлы
Узлы — это фундаментальные строительные блоки вашей игры. Они подобны ингредиентам в рецепте. Существуют десятки их видов, которые могут отображать изображение, воспроизводить звук, представлять камеру и многое другое.
Все узлы имеют следующие атрибуты:
Имя.
Редактируемые свойства.
Они получают обратные вызовы для того, чтобы обновляться каждый кадр.
Вы можете расширить их новыми свойствами и функциями.
Вы можете добавить их в другой узел в качестве дочерних.
Последняя характеристика очень важна. Вместе узлы образуют дерево, которое является мощной функцией для организации проектов. Поскольку разные узлы имеют разные функции, их объединение позволяет получить более сложное поведение. Как мы уже видели, вы можете создать играбельного персонажа, за которым следует камера, используя узел CharacterBody2D, узел Sprite2D, узел Camera2D и узел CollisionShape2D.
Сцены
Вы организуете узлы в дереве, подобно нашему персонажу, мы это называем созданием сцены. После сохранения сцены работают как новые типы узлов в редакторе, где вы можете добавить их в качестве дочернего элемента существующего узла. В этом случае экземпляр сцены отображается как отдельный узел со скрытыми внутренними элементами.
Сцены позволяют вам структурировать код вашей игры так, как вы этого хотите. Вы можете компоновать узлы для создания произвольных и сложных типов узлов, таких как игровой персонаж, который бегает и прыгает, полосы жизни, сундука, с которым можно взаимодействовать, и многого другого.
По сути, редактор Godot - это редактор сцен. В нем есть множество инструментов для редактирования 2D- и 3D-сцен, а также пользовательских интерфейсов. Проект Godot может содержать столько сцен, сколько вам необходимо. Движку же требуется только одна сцена - главная сцена. Это сцена, которую Godot загрузит первой, когда вы или игрок запустите игру.
Помимо того, что сцены действуют как узлы, они обладают следующими характеристиками:
Они всегда имеют один корневой узел, такой как "Player" в нашем примере.
Вы можете сохранить их на вашем локальном диске и загрузить позже.
Вы можете создать столько экземпляров сцены, сколько захотите. В вашей игре может быть пять или десять персонажей, созданных на основе сцены "Персонаж".
Создание вашей первой сцены
Давайте создадим нашу первую сцену с одним узлом. Для этого сначала нужно создать новый проект. После открытия проекта вы должны увидеть пустой редактор.
В пустой сцене в доке Scene слева показано несколько вариантов быстрого добавления корневого узла. "2D Scene" добавляет узел Node2D, "3D Scene" добавляет узел Node3D, а "User Interface" добавляет узел Control. Эти пресеты приведены для удобства; они не являются обязательными. "Other Node" позволяет выбрать любой узел в качестве корневого. В пустой сцене "Other Node" эквивалентен нажатию кнопки "Add Child Node" (Добавить дочерний узел) в левом верхнем углу панели Scene, которая обычно добавляет новый узел в качестве дочернего узла текущего выбранного узла.
Мы добавим в нашу сцену один узел Label. Его функция - рисовать текст на экране.
Нажмите кнопку "Добавить дочерний узел" ("Add Child Node") или "Другой узел" ("Other Node"), чтобы создать корневой узел.
Откроется диалоговое окно "Create Node" (Создать узел), в котором отобразится длинный список доступных узлов.
Выберите узел Label (Метка). Вы можете ввести его имя, чтобы отфильтровать его по списку.
Щелкните на узле Label, чтобы выделить его, и нажмите кнопку Создать (Create) в нижней части окна.
Многое происходит, когда вы добавляете первый узел сцены. Сцена изменится на 2D-пространство, поскольку Label является 2D-узлом. Label появится выбранным в верхнем левом углу окна просмотра. Узел появится во вкладке Сцена (Scene) слева, а свойства узла — во вкладке Инспектор (Inspector) справа.
Изменение свойств узла
Следующим шагом будет изменение свойства "Text" у Label. Давайте изменим его на "Hello World".
Перейдите на вкладку Инспектор (Inspector, справа от окна просмотра). Щелкните внутри поля под свойством Text и введите "Hello World".
Вы увидите, как текст отрисовывается в окне просмотра по мере ввода.
См. также
Вы можете изменить любое свойство, приведённое в Инспекторе (Inspector), как мы сделали это с текстом (Text). Исчерпывающую информацию о панели Инспектор (Inspector) смотрите в Инспектор.
Узел Label можно переместить в окне просмотра, выбрав инструмент перемещения на панели инструментов.
Когда метка выделена, нажмите и перетащите в любом месте области просмотра, чтобы переместить ее в центр ограниченного прямоугольником вида.
Запуск сцены
Everything's ready to run the scene! Press the Run Current Scene button in the top-right of the screen or press F6 (Cmd + R on macOS).
Во всплывающем окне предлагается сохранить сцену, что необходимо для её запуска. Нажмите кнопку сохранения в обозревателе файлов, чтобы сохранить её как label.tscn.
Примечание
Диалоговое окно "Save Scene As" (Сохранить сцену как), как и другие диалоговые окна файлов в редакторе, позволяет сохранять файлы только внутри проекта. Путь res:// в верхней части окна представляет корневой каталог проекта и расшифровывается как "путь к ресурсу". Дополнительные сведения о путях к файлам в Godot см. в разделе Файловая система.
Приложение должно открыться в новом окне и отобразить текст «Hello World».
Закройте окно или нажмите F8 (Cmd + . на macOS), чтобы выйти из запущенной сцены.
Настройка главной сцены
To run our test scene, we used the Run Current Scene button. Another button next to it, Run Project, allows you to set and run the project's main scene. You can also press F5 (Cmd + B on macOS) to do so.
Примечание
Running the project's main scene is distinct from running the current scene. If you encounter unexpected behavior, check to ensure you are running the correct scene.
Появится всплывающее окно, предлагающее выбрать основную сцену.
Нажмите кнопку Select (Выбрать) и в появившемся диалоговом окне дважды щёлкните файл label.tscn.
Демонстрация должна запуститься снова. В дальнейшем, каждый раз, когда вы запускаете проект, Godot будет использовать эту сцену в качестве отправной точки.
Примечание
Редактор сохраняет путь к главной сцене в файле project.godot, в директории вашего проекта. Хотя вы можете редактировать этот текстовый файл напрямую, чтобы изменить настройки проекта, вы также можете использовать для этого окно "Проект -> Настройки проекта" ("Project -> Project Settings"). Для получения дополнительной информации смотрите Настройки проекта.
В следующей части мы обсудим еще одну ключевую концепцию в играх и в Godot: создание экземпляров сцены.