Оновлення з Godot 4.4 до Godot 4.5

Для більшості ігор та програм, створених з версії 4.4, перехід на версію 4.5 має бути відносно безпечним. На цій сторінці викладено все, на що потрібно звернути увагу під час перенесення вашого проєкту.

Ломальні зміни

Якщо ви переходите з версії 4.4 на 4.5, перелічені тут критичні зміни можуть вплинути на вас. Зміни згруповано за областями/системами.

Попередження

Для підтримки нових вимог Google Play Android тепер вимагає націлювання на .NET 9 під час експорту проектів C# на Android, інші платформи продовжують використовувати .NET 8 як мінімально необхідну версію, але новіші версії підтримуються і рекомендуються.

Якщо ви використовуєте C# у своєму проєкті та хочете експортувати дані на Android, вам потрібно буде оновити свій проєкт до .NET 9 (див. інструкції в розділі Оновлення до нової версії .NET).

У цій статті вказується, чи кожна порушна зміна впливає на GDScript і чи є порушна зміна C# бінарною сумісністю чи сумісною з джерелом:

  • Сумісність з бінарними файлами – Існуючі бінарні файли успішно завантажаться та виконаються без перекомпіляції, а поведінка під час виконання не зміниться.

  • Сумісність із вихідним кодом – вихідний код буде успішно скомпільовано без змін під час оновлення Godot.

Ядро

Зміна

Сумісність з GDScript

C# двійковий сумісний

Сумісність із вихідним кодом C#

Введено

JSONRPC

Method set_scope replaced by set_method

GH-104890

вузол

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

|✔️ з compat|

|✔️ з compat|

GH-106848

Метод set_name змінює тип параметра name з String на StringName

✔️

|✔️ з compat|

|✔️ з compat|

GH-76560

Рендеринг

Зміна

Сумісність з GDScript

C# двійковий сумісний

Сумісність із вихідним кодом C#

Введено

DisplayServer

Метод file_dialog_show додає новий необов'язковий параметр parent_window_id

✔️

|✔️ з compat|

|✔️ з compat|

GH-98194

Метод file_dialog_with_options_show додає новий необов'язковий параметр parent_window_id

✔️

|✔️ з compat|

|✔️ з compat|

GH-98194

RenderingDevice

Метод texture_create_from_extension додає новий необов'язковий параметр mipmaps

✔️

|✔️ з compat|

|✔️ з compat|

GH-105570

RenderingServer

Метод instance_reset_physics_interpolation вилучено

|✔️ з compat|

|✔️ з compat|

GH-104269

Метод instance_set_interpolated вилучено

|✔️ з compat|

|✔️ з compat|

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

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_char_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_multiline_string додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_multiline_string_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_string додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_string_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Шрифт

Метод draw_char додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_char_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_multiline_string додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_multiline_string_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_string додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_string_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

RichTextLabel

Метод add_image додає новий необов'язковий параметр alt_text

✔️

|✔️ з compat|

|✔️ з compat|

GH-76829

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

✔️

|✔️ з compat|

|✔️ з compat|

GH-107347

Метод push_strikethrough додає необов'язковий параметр color

✔️

|✔️ з compat|

|✔️ з compat|

GH-106300

Метод push_table додає новий необов'язковий параметр name

✔️

|✔️ з compat|

|✔️ з compat|

GH-76829

Метод push_underline додає необов'язковий параметр color

✔️

|✔️ з compat|

|✔️ з compat|

GH-106300

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

✔️

|✔️ з compat|

|✔️ з compat|

GH-107347

TextLine

Метод draw додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

TextParagraph

Метод draw додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_dropcap додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_dropcap_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_line додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_line_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод draw_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

TextServer

Метод font_draw_glyph додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод font_draw_glyph_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод shaped_text_draw додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

Метод shaped_text_draw_outline додає новий необов'язковий параметр oversampling

✔️

|✔️ з compat|

|✔️ з compat|

GH-104872

TreeItem

Метод add_button додає новий необов'язковий параметр alt_text

✔️

|✔️ з compat|

|✔️ з compat|

GH-76829

TextServerExtension

Метод _font_draw_glyph додає новий необов'язковий параметр oversampling

GH-104872

Метод _font_draw_glyph_outline додає новий необов'язковий параметр oversampling

GH-104872

Метод _shaped_text_draw додає новий необов'язковий параметр oversampling

GH-104872

Метод _shaped_text_draw_outline додає новий необов'язковий параметр oversampling

GH-104872

XR

Зміна

Сумісність з GDScript

C# двійковий сумісний

Сумісність із вихідним кодом C#

Введено

OpenXRAPIExtension

Метод register_composition_layer_provider змінює тип параметра extension з OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

|✔️ з compat|

|✔️ з compat|

GH-104087

Метод register_projection_views_extension змінює тип параметра extension з OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

|✔️ з compat|

|✔️ з compat|

GH-104087

Метод unregister_composition_layer_provider змінює тип параметра extension з OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

|✔️ з compat|

|✔️ з compat|

GH-104087

Метод unregister_projection_views_extension змінює тип параметра extension з OpenXRExtensionWrapperExtension на OpenXRExtensionWrapper

✔️

|✔️ з compat|

|✔️ з compat|

GH-104087

OpenXRBindingModifierEditor

Тип API OpenXRBindingModifierEditor змінено з Core на Editor

GH-103869

OpenXRInteractionProfileEditor

Тип API OpenXRInteractionProfileEditor змінено з Core на Editor

GH-103869

OpenXRInteractionProfileEditorBase

Тип API OpenXRInteractionProfileEditorBase змінено з Core на Editor

GH-103869

Примітка

Класи OpenXRBindingModifierEditor, OpenXRInteractionProfileEditor, в OpenXRInteractionProfileEditorBase доступні лише в редакторі. Їх використання поза редактором призведе до помилки компіляції.

У C# це означає, що типи переміщуються з збірки GodotSharp до збірки GodotSharpEditor. Обов'язково оберніть код, що використовує ці типи, в блок #if TOOLS, щоб вони не були включені в експортовану гру.

Цю зміну також було перенесено до версії 4.4.1.

Додатки редактора

Зміна

Сумісність з GDScript

C# двійковий сумісний

Сумісність із вихідним кодом C#

Введено

EditorExportPlatform

Метод get_forced_export_files додає новий необов'язковий параметр preset

✔️

|✔️ з compat|

|✔️ з compat|

GH-71542

EditorUndoRedoManager

Метод create_action додає новий необов'язковий параметр mark_unsaved

✔️

|✔️ з compat|

|✔️ з compat|

GH-106121

EditorExportPlatformExtension

Метод _get_option_icon змінює тип повернення з 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() will return different values in 4.5 compared to 4.4, as TileMapLayer physics chunking is enabled by default. Higher values of TileMapLayer.physics_quadrant_size will make this function less precise. To get the exact cell coordinates like in 4.4 and prior versions, you need to set TileMapLayer.physics_quadrant_size to 1, which disables physics chunking.

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(RESOURCE_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).

Примітка

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

Примітка

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

Фізика

Примітка

Коли 3D-фізичний движок налаштований на Jolt Physics, тепер ви завжди будете бачити перекриття між Area3D і статичними тілами, про які повідомляється за замовчуванням, оскільки налаштування проекту physics/jolt_physics_3d/simulation/areas_detect_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.