Обновление с Godot 4.2 на Godot 4.3
Для большинства игр и приложений сделанных на Godot 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 |
||||
Тип переименован в |
❌ |
❌ |
❌ |
Изменения в поведении
In 4.3, some behavior changes have been introduced, which might require you to adjust your project.
Ядро
Примечание
Двоичная сериализация (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 для запроса разрешений и ожидания ответа пользователя.