Обновление с Godot 4.1 на Godot 4.2

Большинство игр и приложений сделанных в 4.1 может быть относительно легко перенесено на 4.2. Эта страница предназначена для освещения всего что требует внимания при переносе вашего проекта.

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

Если вы переноситесь с 4.1 на 4.2, изменения нарушающие обратную совместимость перечисленные здесь могут затронуть вас. Изменения сгруппированы по областям/системам.

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

Формат ресурса Mesh изменен в 4.2 для разрешения вершинной и атрибутной компрессии. Это позволяет улучшать производительность отрисовки, особенно на платформах ограниченных по шине памяти такие как мобильные телефоны.

Все еще возможно загружать форматы сеток из Godot 4.0-4.1, но не возможно загрузить формат сетки из Godot 4.2 в предыдущих версиях Godot. При открытии проекта Godot на версии до 4.2, вам может быть показан диалог обновления который предлагает две опции:

  • Перезапуск & Обновление: Обновляет формат сетки для всех мешей в проекте и сохраняет результат на диск. После выбора, эта опция предотвращает возврат проекта на предыдущую версию Godot до 4.2. Установите систему контроля версий и делайте push-ваших изменений перед выбором этой опции!

  • Только Обновление: Обновляет формат сетки в памяти без записи на диск. Это позволяет откатывать проект на версию Godot старше 4.2 если вам потребуется это в будущем. Недостатком этого будет более медленная загрузка так как формат сеток будет обновляться при каждом запуске проекта. Увеличенное время загрузки также влияет на экспортируемый проект. Количество и сложность ресурсов Мешей влияет на продолжительность времени загрузки.

Если этот диалог не показывается, используйте опцию Проект> Инструменты> Обновить поверхности сетки… наверху редактора.

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

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

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

Ядро

Изменение

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

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

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

Введено в

Node

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

✔️

GH-84419

Анимация

Изменение

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

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

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

Введено в

AnimationPlayer

Метод _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

AnimationTree

Метод _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#

Введено в

ImporterMesh

Метод add_surface изменяет тип параметра flags с uint32 на uint64

✔️

✔️

✔️

GH-81138

Метод get_surface_format изменяет тип возвращаемого значения с uint32 на uint64

✔️

GH-81138

MeshDataTool

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

✔️

✔️

✔️

GH-81138

Метод get_format изменяет тип возвращаемого значения с uint32 на uint64

✔️

GH-81138

RenderingDevice

Поле перечисления BarrierMask.BARRIER_MASK_RASTER изменяет значение с 1 на 9

✔️

✔️

✔️

GH-79911

Поле перечисления BarrierMask.BARRIER_MASK_ALL_BARRIERS изменяет значение с 7 на 32767

✔️

✔️

✔️

GH-79911

Поле перечисления 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#

Введено в

Font

Метод set_fallbacks заменен на свойство fallbacks

✔️

GH-78266

Метод get_fallbacks заменен на свойство fallbacks

✔️

GH-78266

У метода find_variation добавлены новые опциональные (spacing_glyph) и не опциональные (spacing_top, spacing_bottom, spacing_space

✔️

✔️

✔️

GH-80954

GraphEdit

Изменение

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

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

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

Введено в

GraphEdit

Свойство 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

GraphNode

Свойство 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

Свойство language удалено

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

Сигнал resize_request перемещен в базовый класс GraphElement

✔️

GH-79311

Свойство selectable перемещено в базовый класс GraphElement

✔️

✔️

✔️

GH-79311

Свойство selected перемещено в базовый класс GraphElement

✔️

✔️

✔️

GH-79311

Свойство show_close удалено

GH-79311

Свойство text_direction удалено

GH-79311

TileMap

Изменение

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

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

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

Введено в

TileMap

Свойство cell_quadrant_size переименовано в rendering_quadrant_size

✔️

✔️

GH-81070

XR

Изменение

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

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

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

Введено в

XRInterface

Свойство environment_blend_mode добавлено

✔️

GH-81561

Примечание

Это изменение нарушает совместимость в C#, поскольку новое свойство конфликтует с именем существующего перечисления, а генератор привязок C# отдает приоритет свойствам, поэтому тип перечисления был переименован из EnvironmentBlendMode в EnvironmentBlendModeEnum.