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.1 до Godot 4.2

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

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

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

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

Формат ресурсу Mesh змінено в 4.2, щоб дозволити стиск вершин і атрибутів. Це дозволяє підвищити продуктивність візуалізації, особливо на платформах, обмежених пропускною здатністю пам’яті, наприклад мобільних.

Все ще можна завантажити формати Godot 4.0-4.1 Mesh, але не можливо завантажити формат Godot 4.2 Mesh у попередніх версіях Godot. Під час відкриття проекту Godot, створеного з версією до 4.2, вам може відобразитися діалогове вікно оновлення, яке пропонує два варіанти:

  • Перезапуск і оновлення: оновлює формат сітки для всіх сіток у проекті та зберігає результат на диск. Після вибору цей параметр запобігає поверненню проекту до версії Godot, ранішої за 4.2. Налаштуйте систему контролю версій і внесіть свої зміни перед вибором цієї опції!

  • Лише оновлення: оновлює формат сітки в пам’яті без запису на диск. Це дозволяє знизити версію проекту до версії Godot, старішої за 4.2, якщо вам знадобиться це зробити в майбутньому. Недоліком є те, що завантаження проекту відбуватиметься повільніше щоразу, оскільки формат сітки потрібно оновлювати щоразу, коли завантажується проект. Ці збільшення часу завантаження також вплинуть на експортований проект. Кількість і складність ресурсів Mesh визначає, наскільки це впливає на час завантаження.

Якщо це діалогове вікно не з’являється, скористайтеся Проект > Інструменти > Оновити сітчасті поверхні… у верхній частині редактора.

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

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

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

Ядро

Зміна

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

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

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

Введено

вузол

Константу NOTIFICATION_NODE_RECACHE_REQUESTED видалено

✔️

GH-84419

Анімація

Зміна

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

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

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

Введено

Програвач анімації

Метод _post_process_key_value перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод add_animation_library перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод advance перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Сигнал animation_finished перенесено до базового класу AnimationMixer

✔️

GH-80813

Сигнал animation_started перенесено до базового класу AnimationMixer

✔️

GH-80813

Сигнал animation_libraries_updated переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Сигнал animation_list_changed переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість audio_max_polyphony перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Сигнал caches_cleared перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод clear_caches перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод find_animation перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод find_animation_library перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_animation перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_animation_library перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_animation_library_list перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_animation_list переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод has_animation переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод has_animation_library переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість method_call_mode перейменовано на callback_mode_method і переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість playback_active перейменовано на active і переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість playback_process_mode перейменовано на callback_mode_process і переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод remove_animation_library перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод rename_animation_library перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість reset_on_save перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість root_node переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод set_reset_on_save_enabled перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

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

✔️

✔️

✔️

GH-80813

Дерево анімації

Метод _post_process_key_value перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість active перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод advance перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Сигнал animation_finished перенесено до базового класу AnimationMixer

✔️

GH-80813

Сигнал animation_started перенесено до базового класу AnimationMixer

✔️

GH-80813

Властивість audio_max_polyphony перенесено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_root_motion_position перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_root_motion_position_accumulator перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_root_motion_rotation перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_root_motion_rotation_accumulator перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_root_motion_scale перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Метод get_root_motion_scale_accumulator перенесено в базовий клас AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість process_callback перейменовано на callback_mode_process і переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість root_motion_track переміщено до базового класу AnimationMixer

✔️

✔️

✔️

GH-80813

Властивість tree_root змінює тип з AnimationNode на AnimationRootNode

✔️

GH-80813

Вузли GUI

Зміна

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

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

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

Введено

Спливаюче меню

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

✔️

✔️

✔️

GH-36493

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

✔️

✔️

✔️

GH-36493

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

✔️

✔️

✔️

GH-79965

RichTextLabel

Метод add_image додає нові додаткові параметри key, pad, tooltip і size_in_percent

✔️

✔️

✔️

GH-80410

Рендеринг

Зміна

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

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

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

Введено

Імпортер сітки

Метод add_surface змінює тип параметра flags з uint32 на uint64

✔️

✔️

✔️

GH-81138

Метод get_surface_format змінює тип повернення з uint32 на uint64

✔️

GH-81138

Інструмент даних сітки

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

✔️

✔️

✔️

GH-81138

Метод get_format змінює тип повернення з uint32 на uint64

✔️

GH-81138

RenderingDevice

Поле Enum BarrierMask.BARRIER_MASK_RASTER змінює значення з 1 на 9

✔️

✔️

✔️

GH-79911

Поле Enum BarrierMask.BARRIER_MASK_ALL_BARRIERS змінює значення з 7 на 32767

✔️

✔️

✔️

GH-79911

Поле Enum BarrierMask.BARRIER_MASK_NO_BARRIER змінює значення з 8 на 32768

✔️

✔️

✔️

GH-79911

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

✔️

✔️

✔️

GH-79606

Метод shader_get_vertex_input_attribute_ask змінює тип повернення з uint32 на uint64

✔️

GH-81138

Інструмент SurfaceTool

Метод commit змінює тип параметра flags з uint32 на uint64

✔️

✔️

✔️

GH-81138

текст

Зміна

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

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

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

Введено

Шрифт

Метод set_fallbacks замінено на властивість fallbacks

✔️

GH-78266

Метод get_fallbacks замінено властивістю fallbacks

✔️

GH-78266

Метод find_variation додає нові додаткові параметри spacing_top, spacing_bottom, spacing_space і spacing_glyph

✔️

✔️

✔️

GH-80954

Редагування графіка

Зміна

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

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

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

Введено

Редагування графіка

Властивість arrange_nodes_button_hidden перейменовано на show_arrange_button

✔️

✔️

GH-81582

Метод get_zoom_hbox перейменовано на get_menu_hbox

✔️

✔️

GH-79308

Властивість snap_distance перейменовано на snapping_distance

✔️

✔️

GH-79308

Властивість use_snap перейменовано на snapping_enabled

✔️

✔️

GH-79308

Вузол графіка

Властивість comment видалено

GH-79307

Сигнал close_request перейменовано на delete_request і переміщено до базового класу GraphElement

✔️

✔️

GH-79311

Властивість draggable перенесено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Властивість draggable перенесено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Сигнал dragged переміщено до базового класу GraphElement

✔️

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

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

GH-79311

Властивість мова видалено

GH-79311

Сигнал node_deselected переміщено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Сигнал node_selected переміщено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Властивість overlay видалено

GH-79311

Властивість position_offset перенесено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Сигнал position_offset_changed переміщено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Сигнал raise_request перенесено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Властивість resizable перенесено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Властивість resizable перенесено до базового класу GraphElement

✔️

GH-79311

Властивість selectable перенесено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Властивість selected переміщено до базового класу GraphElement

✔️

✔️

✔️

GH-79311

Властивість show_close видалено

GH-79311

Властивість text_direction видалено

GH-79311

Плитка карти

Зміна

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

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

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

Введено

Плитка карти

Властивість cell_quadrant_size перейменовано на rendering_quadrant_size

✔️

✔️

GH-81070

XR

Зміна

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

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

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

Введено

XRIінтерфейс

Додано властивість environment_blend_mode

✔️

GH-81561

Примітка

Ця зміна порушує сумісність у C#, оскільки нова властивість конфліктує з іменем існуючого enum, а генератор прив’язок C# надає пріоритет властивостям, тому тип enum було перейменовано з EnvironmentBlendMode на EnvironmentBlendModeEnum.