Обновление с Godot 4.4 на Godot 4.5

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

Изменения ломающие обратную совместимость

Если вы переходите с версии 4.4 на 4.5, перечисленные здесь критические изменения могут вас затронуть. Изменения сгруппированы по областям/системам.

Предупреждение

Для поддержки новых требований Google Play Android теперь требует использования .NET 9 при экспорте проектов C# в Android, другие платформы продолжают использовать .NET 8 в качестве минимально необходимой версии, но более новые версии поддерживаются и приветствуются.

Если вы используете C# в своем проекте и хотите экспортировать его на Android, вам потребуется обновить свой проект до .NET 9 инструкции см. в разделе Обновление до новой версии .NET).

Эта статья показывает, где каждое изменение обратной совместимости влияет на GDScript и где изменение обратной совместимости C# бинарно совместимо или совместимо на уровне кода:

  • Binary compatible (Совместимость на уровне двоичных файлов) — Существующие двоичные файлы будут успешно загружены и выполнены без перекомпиляции, а поведение среды выполнения не изменится.

  • Совместимо на уровне кода - Исходный код будет успешно компилироваться без изменений при обновлении Godot.

Ядро

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

JSONRPC

Method set_scope replaced by set_method

GH-104890

Node

Метод get_rpc_config переименован в get_node_rpc_config

✔️

✔️

GH-106848

Метод set_name изменяет тип параметра name с String на StringName

✔️

✔️

✔️

GH-76560

Отрисовка

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

DisplayServer

Метод file_dialog_show добавляет новый необязательный параметр parent_window_id

✔️

✔️

✔️

GH-98194

Метод file_dialog_with_options_show добавляет новый необязательный параметр parent_window_id

✔️

✔️

✔️

GH-98194

RenderingDevice

Метод texture_create_from_extension добавляет новый необязательный параметр mipmaps

✔️

✔️

✔️

GH-105570

RenderingServer

Метод instance_reset_physics_interpolation удален

✔️

✔️

GH-104269

Метод instance_set_interpolated удален

✔️

✔️

GH-104269

Примечание

In C#, the enum RenderingDevice.Features breaks compatibility because of the way the bindings generator detects the enum prefix. New members were added to the enum in GH-103941 that caused the enum member Address to be renamed to BufferDeviceAddress.

GLTF

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

GLTFAccessor

Свойство byte_offset изменяет тип метаданных с int32 на int64

✔️

GH-106220

Свойство component_type изменяет тип с int на GLTFAccessor::GLTFComponentType

✔️

GH-106220

Свойство count изменяет тип метаданных с int32 на int64

✔️

GH-106220

Свойство sparse_count изменяет тип метаданных с int32 на int64

✔️

GH-106220

Свойство sparse_indices_byte_offset изменяет тип метаданных с int32 на int64

✔️

GH-106220

Свойство sparse_indices_component_type изменяет тип с int на GLTFAccessor::GLTFComponentType

✔️

GH-106220

Свойство sparse_values_byte_offset изменяет тип метаданных с int32 на int64

✔️

GH-106220

GLTFBufferView

Свойство byte_length изменяет тип метаданных с int32 на int64

✔️

GH-106220

Свойство byte_offset изменяет тип метаданных с int32 на int64

✔️

GH-106220

Свойство byte_stride изменения типа метаданных от int32 до int64

✔️

GH-106220

Примечание

В результате изменения типа метаданных связывания C# изменили тип с int (32-байта) на long (64-байта).

Текст

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

CanvasItem

Метод draw_char добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_char_outline добавляет новый параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_multiline_string добавляет новый oversampling опционный параметр

✔️

✔️

✔️

GH-104872

Метод draw_multiline_string_outline добавляет новый параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_string добавляет новый параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_list_begin добавляет новый необязательный параметр breadcrumb

✔️

✔️

✔️

GH-104872

Font

Метод draw_char добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_char_outline добавляет новый параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_multiline_string добавляет новый oversampling опционный параметр

✔️

✔️

✔️

GH-104872

Метод draw_multiline_string_outline добавляет новый параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_string добавляет новый параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_list_begin добавляет новый необязательный параметр breadcrumb

✔️

✔️

✔️

GH-104872

RichTextLabel

Метод add_image добавляет новый Необязательный параметр alt_text

✔️

✔️

✔️

GH-76829

Метод add_image заменил параметр size_in_percent на width_in_percent и height_in_percent

✔️

✔️

✔️

GH-107347

Метод push_strikethrough добавляет дополнительный параметр color

✔️

✔️

✔️

GH-106300

Метод push_table добавляет новый необязательный параметр name

✔️

✔️

✔️

GH-76829

Метод push_underline добавляет необязательный параметр color

✔️

✔️

✔️

GH-106300

Метод update_image заменил параметр size_in_percent на width_in_percent и height_in_percent

✔️

✔️

✔️

GH-107347

TextLine

Метод draw добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_outline добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

TextParagraph

Метод draw добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_dropcap добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_dropcap_outline добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_line добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_outline добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод draw_outline добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

TextServer

Метод font_draw_glyph добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод font_draw_glyph_outline добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод shape_text_draw добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

Метод shape_text_draw_outline добавляет новый необязательный параметр oversampling

✔️

✔️

✔️

GH-104872

TreeItem

Метод add_button добавляет новый необязательный параметр alt_text

✔️

✔️

✔️

GH-76829

TextServerExtension

Метод _font_draw_glyph добавляет новый необязательный параметр oversampling

GH-104872

Метод font_draw_glyph_outline добавляет новый необязательный параметр oversampling

GH-104872

Метод shape_text_draw добавляет новый необязательный параметр oversampling

GH-104872

Метод _ shape_text_draw_outline добавляет новый необязательный параметр oversampling

GH-104872

XR

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

OpenXRAPIExtension

Метод register_composition_layer_provider изменяет тип параметра extension с OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

✔️

✔️

GH-104087

Метод register_projection_views_extension изменяет тип параметра extension с OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

✔️

✔️

GH-104087

Метод unregister_composition_layer_provider изменяет тип параметра extension с OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

✔️

✔️

GH-104087

Метод unregister_projection_views_extension изменяет тип параметра extension с OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

✔️

✔️

GH-104087

OpenXRBindingModifierEditor

Тип OpenXRBindingModifierEditor изменил тип API с Core на Editor

GH-103869

OpenXRInteractionProfileEditor

Тип OpenXRInteraction ProfileEditor изменил тип API с Core на Editor

GH-103869

OpenXRInteractionProfileEditorBase

Тип OpenXRInteraction ProfileEditorBase изменил тип API с Core на Editor

GH-103869

Примечание

Классы OpenXRBindingModifierEditor, OpenXRInteractionProfileEditor, и OpenXRInteraction ProfileEditorBase доступны только в редакторе. Использование их за пределами редактора приведет к ошибке компиляции.

В C# это означает, что типы перемещаются из сборки GodotSharp в сборку GodotSharpEditor. Убедитесь, что обертывание кода, который использует эти типы в блоке #if TOOLS, чтобы убедиться, что они не включены в экспортируемую игру.

Это изменение также было перенесено на пункт 4.4.1.

Плагины редактора

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

EditorExportPlatform

Метод get_forced_export_files добавляет новый необязательный параметр preset

✔️

✔️

✔️

GH-71542

EditorUndoRedoManager

Метод Create_action добавляет новый необязательный параметр mark_unsaved

✔️

✔️

✔️

GH-106121

EditorExportPlatformExtension

Метод _get_option_icon изменения типа return с ImageTexture на Texture2D

✔️

GH-108825

Изменения в поведении

In 4.5, some behavior changes have been introduced, which might require you to adjust your project.

TileMapLayer

TileMapLayer.get_coords_for_body_rid() будет возвращать другие значения в 4.5, в сравнении с 4.4, так как по умолчанию в TileMapLayer включено деление физики на части. Более высокие значения параметра TileMapLayer.physics_quadrant_size сделают эту функцию менее точной. Чтобы получить точные координаты ячейки, как в версии 4.4 и предыдущих версиях, вам необходимо установить TileMapLayer.physics_quadrant_size на значение 1, что отключает разбиение физики на блоки.

Импорт 3D-модели

Внесено исправление в импортеры 3D-моделей для корректной обработки несочлененных узлов в иерархии скелета (GH-104184). Для сохранения совместимости по умолчанию импортируются существующие файлы с тем же поведением, что и раньше (GH-107352). Новые файлы .gltf, .glb, .blend и .fbx (без соответствующего файла .import) будут импортированы с новым поведением. Однако для использования нового поведения для существующих файлов необходимо изменить параметр "Naming Version" в нижней части панели импорта:

../../_images/gltf_naming_version.webp

Ядро

Примечание

Resource.duplicate(true) (which performs deep duplication) now only duplicates resources internal to the resource file it's called on. In 4.4, this duplicated everything instead, including external resources. If you were deep-duplicating a resource that contained references to other external resources, those external resources aren't duplicated anymore. You must call Resource.duplicate_deep(DEEP_DUPLICATE_ALL) instead to keep the old behavior.

Примечание

ProjectSettings.add_property_info() now prints a warning when the dictionary parameter has missing keys or invalid keys. Most importantly, it will now warn when a usage key is passed, as this key is not used. This was also the case before 4.5, but it was silently ignored instead. As a reminder, to set property usage information correctly, you must use ProjectSettings.set_as_basic(), ProjectSettings.set_restart_if_changed(), or ProjectSettings.set_as_internal() instead.

Примечание

В C# StringExtensions.PathJoin теперь избегает добавления дополнительного разделителя пути, если исходная строка пуста или если добавленный путь начинается с разделителя пути (GH-105281).

Примечание

In C#, StringExtensions. GetExtension теперь возвращает пустую строку вместо оригинальной строки, когда оригинальная строка не содержит расширения (GH-108041).

Примечание

В C# Quaternion (Vector3, Vector3) конструктор теперь правильно создает кватернион (quaternion), представляющий кратчайшую дугу между двумя входными векторами. Ранее он возвращал неправильные значения для определенных входов (GH-107618).

Физика

Примечание

Когда 3D-двигатель физики настроен на Jolt Physics, теперь вы всегда будете иметь перекрытие между Area3D и статическими телами, сообщаемыми по умолчанию, так как physics/jolt_physics_3d/simulation/areas_ detection_static_bodies был удален (GH-105746). Если вы все еще хотите, чтобы такие совпадения игнорировались, вам нужно будет изменить маску столкновения или слой Area3D или статического тела вместо этого.

Текст

Примечание

В GDScript вызовы функций RichTextLabel::add_image и RichTextLabel::update_image продолжат работать, но аргумент size_in_percent теперь будет использоваться в качестве значения width_in_percent, а height_in_percent по умолчанию будет иметь значение false (GH-107347). Чтобы восстановить прежнее поведение, можно явно задать height_in_percent то же значение, которое передавалось как size_in_percent.