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

Для большинства игр и приложений сделанных на Godot 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.