Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Оновлення з Godot 4.2 до Godot 4.3

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

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

Якщо ви переходите з 4.2 на 4.3, перелічені тут критичні зміни можуть вплинути на вас. Зміни згруповано за сферами/системами.

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

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

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

GDеxtension

Зміна

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

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

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

Введено

GDExtension

Метод close_library видалено

GH-88418

Метод initialize_library видалено

GH-88418

Метод open_library видалено

GH-88418

Оскільки було практично неможливо використовувати ці методи будь-яким корисним способом, ці методи були видалені. Замість цього використовуйте GDExtensionManager::load_extension і GDExtensionManager::unload_extension, щоб правильно завантажити та вивантажити GDExtension.

Анімація

Зміна

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

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

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

Введено

Анімація

Метод position_track_interpolate додає новий необов’язковий параметр backward

✔️

✔️

✔️

GH-86629

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

✔️

✔️

✔️

GH-86629

Метод scale_track_interpolate додає новий необов’язковий параметр backward

✔️

✔️

✔️

GH-86629

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

✔️

✔️

✔️

GH-86629

Метод value_track_interpolate додає новий необов’язковий параметр backward

✔️

✔️

✔️

GH-86629

Метод track_find_key додає новий необов’язковий параметр limit

✔️

✔️

✔️

GH-86661

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

✔️

✔️

✔️

GH-92861

AnimationMixer

Метод _post_process_key_value змінює тип параметра object з Object на uint64

✔️

GH-86687

Skeleton3D

Метод add_bone змінює тип повернення з void на int32

✔️

✔️

GH-88791

Сигнал bone_pose_changed замінено на skeleton_updated

GH-90575

BoneAttachment3D

Метод on_bone_pose_update замінено на on_skeleton_update

✔️

✔️

✔️

GH-90575

Вузли GUI

Зміна

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

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

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

Введено

AcceptDialog

Метод register_text_enter змінює тип параметра line_edit з Control на LineEdit

✔️

✔️

✔️

GH-89419

Метод remove_button змінює тип параметра button з Control на Button

✔️

✔️

✔️

GH-89419

Фізика

Зміна

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

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

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

Введено

PhysicsShapeQueryParameters3D

Властивість motion змінює тип з Vector2 на Vector3

GH-85393

Примітка

У C# перелік PhysicsServer3D.G6DofJointAxisFlag порушує сумісність через те, як генератор прив’язок визначає префікс переліку. Нові члени були додані в GH-89851 до переліку, що призвело до перейменування членів переліку.

Рендеринг

Зміна

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

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

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

Введено

RenderingDevice

Поле Enum FinalAction.FINAL_ACTION_CONTINUE змінює значення з 2 на 0

✔️

GH-84976

Поле Enum InitialAction.INITIAL_ACTION_CLEAR змінює значення з 0 на 1

✔️

GH-84976

Поле Enum InitialAction.INITIAL_ACTION_CLEAR_REGION_CONTINUE змінює значення з 2 на 1

✔️

GH-84976

Поле Enum InitialAction.INITIAL_ACTION_CONTINUE змінює значення з 5 на 0

✔️

GH-84976

Поле Enum InitialAction.INITIAL_ACTION_DROP змінює значення з 4 на 2

✔️

GH-84976

Поле Enum InitialAction.INITIAL_ACTION_KEEP змінює значення з 3 на 0

✔️

GH-84976

Метод buffer_clear видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод buffer_update видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод compute_list_begin видаляє параметр allow_draw_overlap

✔️

✔️

✔️

GH-84976

Метод compute_list_end видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод draw_list_begin видаляє параметр storage_textures

✔️

✔️

✔️

GH-84976

Метод draw_list_end видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод texture_clear видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод texture_copy видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод texture_resolve_multisample видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод texture_update видаляє параметр post_barrier

✔️

✔️

✔️

GH-84976

RenderingServer

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

✔️

✔️

✔️

GH-84792

RenderSceneBuffersRD

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

✔️

✔️

✔️

GH-80214

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

✔️

✔️

✔️

GH-80214

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

✔️

✔️

✔️

GH-80214

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

✔️

✔️

✔️

GH-80214

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

✔️

✔️

✔️

GH-80214

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

✔️

✔️

✔️

GH-80214

Примітка

У той час як значення полів enum у RenderingDevice.InitialAction і RenderingDevice.FinalAction змінилися, єдиний метод, який споживав їх (draw_list_begin), додав метод сумісності, який підтримує старі значення. Тож на практиці це не порушує сумісності.

Примітка

У C# перелік RenderingDevice.DriverResource порушує сумісність через те, як генератор прив’язок визначає префікс переліку. Нові члени були додані в GH-83452 до переліку, що призвело до перейменування членів переліку.

текст

Зміна

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

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

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

Введено

Шрифт

Метод find_variation додає новий необов’язковий параметр baseline_offset

✔️

✔️

✔️

GH-87668

RichTextLabel

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

✔️

✔️

✔️

GH-89024

TextServer

Метод shaped_text_get_word_breaks додає новий необов’язковий параметр skip_grapheme_flags

✔️

✔️

✔️

GH-90732

TextServerExtension

Метод _shaped_text_get_word_breaks додає новий параметр skip_grapheme_flags

GH-90732

Аудіо

Зміна

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

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

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

Введено

AudioStreamPlaybackPolyphonic

Метод play_stream додає нові необов’язкові параметри playback_type і bus

✔️

✔️

✔️

GH-91382

Плитка карти

Зміна

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

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

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

Введено

TileData

Метод get_navigation_polygon додає нові додаткові параметри flip_h, flip_v і transpose

✔️

✔️

✔️

GH-84660

Метод get_occluder додає нові додаткові параметри flip_h, flip_v і transpose

✔️

✔️

✔️

GH-84660

XR

Зміна

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

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

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

Введено

WebXRInterface

Метод get_input_source_tracker змінює тип повернення з XRPositionalTracker на XRControllerTracker

✔️

✔️

GH-90645

XRServer

Метод get_tracker змінює тип повернення з XRPositionalTracker на XRTracker

✔️

GH-90645

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

Зміна

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

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

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

Введено

EditorInspectorPlugin

Метод add_property_editor додає новий необов’язковий параметр label

✔️

✔️

✔️

GH-92322

EditorPlugin

Метод add_control_to_bottom_panel додає новий необов’язковий параметр shortcut

✔️

✔️

✔️

GH-88081

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

✔️

✔️

✔️

GH-88081

EditorSceneFormatImporterFBX

Тип перейменовано на EditorSceneFormatImporterFBX2GLTF

GH-81746

Зміни поведінки

У версії 4.3 було введено деякі зміни в поведінці, які можуть вимагати від вас коригування вашого проєкту.

Ядро

Примітка

Двійкову серіалізацію було змінено, щоб виправити деякі проблеми з серіалізацією скриптових об’єктів і типізованих масивів (GH-78219). Це порушує сумісність із кодуванням/декодуванням сценарію.

Примітка

PackedByteArray тепер може використовувати більш компактне кодування base64 для зберігання. Але компроміс полягає в тому, що це порушує сумісність, а це означає, що старіші версії Godot можуть не мати змоги відкрити ресурси, збережені 4.3 (GH-89186).

Щоб максимально підвищити сумісність, цей новий формат зберігання поки що буде ввімкнено лише для ресурсів і сцен, які містять великі PackedByteArrays. Підтримку цього нового формату також буде додано в оновленнях для старих версій Godot. Щойно всі підтримувані версії Godot зможуть читати новий формат, ми поступово припиняємо заходи щодо сумісності, а всі ресурси та сцени використовуватимуть новий формат зберігання.

Примітка

У C# реалізацію Transform3D.InterpolateWith було виправлено для використання правильного порядку операцій із застосуванням обертання перед масштабом (GH-89843).

Примітка

У C# реалізацію Aabb.GetSupport було виправлено для належного повернення вектора підтримки (GH-88919).

Примітка

У C# реалізація ToString для типів варіантів тепер за замовчуванням використовує InvariantCulture (GH-89547), що означає, що Vector2(1.2, 3.4) відформатовано з використанням . як десяткового розділювача незалежно від мови операційної системи, на якій працює програма.

Анімація

Примітка

AnimationMixer замінив свій режим захоплення новою функцією захоплення, яка працює набагато краще, ніж стара; вона замінює існуючий кеш (GH-86715).

Примітка

AnimationNode має перероблений процес для отримання інформації про семантичний час. Це гарантує, що поведінка, пов’язана з часом, працює належним чином, але змінює поведінку змішування. Розробникам віртуального методу _process також слід звернути увагу, що цей метод зараз застарів і буде замінений на новий у майбутньому (GH-87171).

Додаткову інформацію про зміни в анімації можна знайти в статті Міграція анімації з Godot 4.0 на 4.3.

Вузли GUI

Примітка

Стандартний колір контуру шрифту змінено з білого на чорний (GH-54641).

Примітка

Властивість auto_translate застаріла на користь властивості auto_translate_mode, яка тепер знаходиться у Node (GH-87530). Стандартним значенням для auto_translate_mode є AUTO_TRANSLATE_INHERIT, що означає, що вузли успадковують значення auto_translate_mode від свого батька. Це означає, що існуючі вузли з властивістю auto_translate, встановленою на true, більше не можуть бути перекладені, якщо вони є нащадками вузла з властивістю auto_translate, встановленою на false.

Мультіплеер

Примітка

Протокол кешування SceneMultiplayer було змінено для надсилання отриманого ідентифікатора замість шляху вузла під час надсилання пакета підтвердження видалення вузла (GH-90027).

Це кардинальна зміна для багатокористувацького протоколу високого рівня, що робить його несумісним із попередніми версіями Godot. Оновіть серверну та клієнтську версії до Godot 4.3, щоб витончено впоратися з цією зміною.

Зауважте, що багатокористувацькі засоби високого рівня завжди призначені для сумісності лише з сервером і клієнтом, які використовують ту саму версію Godot. Рекомендується реалізувати певний вид перевірки версій.

Рендеринг

Примітка

Наклейки тепер перетворюють модульований колір із кольору sRGB на лінійний колір, як і всі інші вхідні дані, для забезпечення належного змішування (GH-89849). Існуючі проекти, які використовували властивість decal modulate, помітять зміни у своїх візуальних ефектах.

Примітка

Тепер реалізовано метод зворотного буфера глибини Z. Це може порушити сумісність для деяких шейдерів. Ознайомтеся зі статтею Представляємо Reverse Z (також вибачте, що зламав ваш шейдер), щоб отримати додаткову інформацію та вказівки щодо вирішення поширених сценаріїв.

Плитка карти

Примітка

Шари TileMap переміщено в окремі вузли (GH-87379 і GH-89179).

Android

Примітка

Дозволи Android більше не запитуються автоматично, оскільки це суперечить рекомендованим найкращим практикам (GH-87080). Використовуйте метод request_permission в OS і on_request_permissions_result сигнал MainLoop, щоб запитати дозволи та дочекатися відповіді користувача.