Обновление с Godot 4.2 на Godot 4.3
Для большинства игр и приложений, созданных с 4.2, миграция на 4.3 должна быть относительно безопасной. На этой странице вы найдете все, на что следует обратить внимание при миграции вашего проекта.
Изменения ломающие обратную совместимость
Если вы переходите с 4.2 на 4.3, изменения нарушающие обратную совместимость перечисленные здесь могут затронуть вас. Изменения сгруппированы по областям/системам.
Эта статья показывает, где каждое изменение обратной совместимости влияет на GDScript и где изменение обратной совместимости C# бинарно совместимо или совместимо на уровне кода:
Binary compatible (Совместимость на уровне двоичных файлов) — существующие двоичные файлы будут успешно загружены и выполнены без перекомпиляции, а поведение среды выполнения не изменится.
Совместимо на уровне кода - Исходный код будет успешно компилироваться без изменений при обновлении Godot.
GDExtension
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
GDExtension |
||||
Method |
❌ |
❌ |
❌ |
|
Метод |
❌ |
❌ |
❌ |
|
Метод |
❌ |
❌ |
❌ |
Поскольку было в принципе невозможно использовать эти методы каким-либо полезным образом, эти методы были удалены. Используйте GDExtensionManager::load_extension и GDExtensionManager::unload_extension вместо этого, чтобы правильно загружать и выгружать GDExtension.
Анимация
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
Анимация |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
AnimationMixer (Микшер анимации) |
||||
Метод |
✔️ |
❌ |
❌ |
|
Skeleton3D (Скелет3D) |
||||
Метод |
✔️ |
❌ |
✔️ |
|
Сигнал |
❌ |
❌ |
❌ |
|
BoneAttachment3D (Костное крепление 3D) |
||||
Метод |
✔️ |
✔️ |
✔️ |
GUI узлы
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
AcceptDialog (Принять Диалог) |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
Физика
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
PhysicsShapeQueryParameters3D (Параметры запроса физической формы 3D) |
||||
Свойство |
❌ |
❌ |
❌ |
Примечание
В C# перечисление PhysicsServer3D.G6DofJointAxisFlag нарушает совместимость из-за способа, которым генератор привязок обнаруживает префикс перечисления. В GH-89851 в перечисление были добавлены новые члены, что привело к переименованию членов перечисления.
Отрисовка
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
RenderingDevice |
||||
Поле перечисления |
✔️ |
❌ |
❌ |
|
Поле перечисления |
✔️ |
❌ |
❌ |
|
Поле перечисления |
✔️ |
❌ |
❌ |
|
Поле перечисления |
✔️ |
❌ |
❌ |
|
Поле перечисления |
✔️ |
❌ |
❌ |
|
Поле перечисления |
✔️ |
❌ |
❌ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
Method |
✔️ |
✔️ |
✔️ |
|
RenderSceneBuffersRD (Рендеринг буфера сцены RD) |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
Примечание
Хотя значения полей enum в RenderingDevice.InitialAction и RenderingDevice.FinalAction изменились, единственный метод, который их использовал (draw_list_begin), добавил метод совместимости, который поддерживает старые значения. Поэтому на практике это не нарушает совместимость.
Примечание
В C# перечисление RenderingDevice.DriverResource нарушает совместимость из-за способа, которым генератор привязок обнаруживает префикс перечисления. В GH-83452 в перечисление были добавлены новые члены, что привело к переименованию членов перечисления.
Текст
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
Font |
||||
Method |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Method |
✔️ |
✔️ |
✔️ |
|
TextServer |
||||
Method |
✔️ |
✔️ |
✔️ |
|
TextServerExtension |
||||
Method |
❌ |
❌ |
❌ |
Аудио
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
AudioStreamPlaybackPolyphonic |
||||
Method |
✔️ |
✔️ |
✔️ |
TileMap
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
TileData |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
XR
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
WebXRInterface |
||||
Метод |
✔️ |
❌ |
✔️ |
|
XRServer |
||||
Метод |
✔️ |
❌ |
❌ |
Плагины редактора
Изменение |
Совместимо с GDScript |
Совместимо с бинарным кодом C# |
Совместимо с исходным кодом C# |
Введено в |
|---|---|---|---|---|
EditorInspectorPlugin (Плагин редактора-инспектора) |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
EditorPlugin (Плагин редактора) |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
EditorSceneFormatImporterFBX |
||||
Тип переименован в |
❌ |
❌ |
❌ |
Изменения в поведении
В версии 4.3 были внесены некоторые изменения в поведение, которые могут потребовать от вас корректировки проекта.
Ядро
Примечание
Двоичная сериализация (serialization ) была изменена для исправления некоторых проблем с сериализацией скриптовых объектов и типизированных массивов (GH-78219). Это нарушает совместимость с кодированием/декодированием скрипта.
Примечание
PackedByteArray теперь может использовать более компактную кодировку base64 для хранения. Но компромисс заключается в том, что это нарушает совместимость, а это означает, что старые версии Godot могут не иметь возможности открывать ресурсы, сохраненные в 4.3 (GH-89186).
Для максимальной совместимости этот новый формат хранения будет включен только для ресурсов и сцен, которые содержат большие PackedByteArrays на данный момент. Поддержка этого нового формата также будет добавлена в обновления патчей для старых версий Godot. Как только все поддерживаемые версии Godot смогут читать новый формат, мы постепенно отменим меры совместимости и заставим все ресурсы и сцены использовать новый формат хранения.
Примечание
В C# реализация Transform3D.InterpolateWith была исправлена для использования правильного порядка операций, применяя поворот перед масштабированием (GH-89843).
Примечание
В C# реализация Aabb.GetSupport была исправлена для правильного возврата вектора поддержки (GH-88919).
Примечание
В C# реализация ToString типов Variant теперь по умолчанию использует 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). Существующие проекты, которые использовали свойство модулируемости декали, заметят изменение в своих визуальных эффектах.
Примечание
Теперь реализована технология буферизации обратной Z-глубины. Это может нарушить совместимость некоторых шейдеров. Прочитайте статью Введение в обратную Z-глубину (AKA Извините за поломку вашего шейдера) для получения дополнительной информации и рекомендаций по исправлению распространенных сценариев.
TileMap
Android
Примечание
Разрешения Android больше не запрашиваются автоматически, поскольку это противоречит рекомендуемым практикам (GH-87080). Используйте метод request_permission в OS и сигнал on_request_permissions_result в MainLoop для запроса разрешений и ожидания ответа пользователя.