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.
Checking the stable version of the documentation...
Оновлення з Godot 4.2 до Godot 4.3
Для більшості ігор і програм, створених з 4.2, перехід на 4.3 має бути відносно безпечним. На цій сторінці описано все, на що потрібно звернути увагу під час міграції вашого проекту.
Ломальні зміни
Якщо ви переходите з 4.2 на 4.3, перелічені тут критичні зміни можуть вплинути на вас. Зміни згруповано за сферами/системами.
У цій статті вказується, чи кожна порушна зміна впливає на GDScript і чи є порушна зміна C# бінарною сумісністю чи сумісною з джерелом:
Сумісність із двійковими файлами – наявні двійкові файли завантажуватимуться та успішно виконуватимуться без повторної компіляції, а поведінка під час виконання не зміниться.
Сумісність із вихідним кодом – вихідний код буде успішно скомпільовано без змін під час оновлення Godot.
GDеxtension
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
GDExtension |
||||
Метод |
❌ |
❌ |
❌ |
|
Метод |
❌ |
❌ |
❌ |
|
Метод |
❌ |
❌ |
❌ |
Оскільки було практично неможливо використовувати ці методи будь-яким корисним способом, ці методи були видалені. Замість цього використовуйте GDExtensionManager::load_extension і GDExtensionManager::unload_extension, щоб правильно завантажити та вивантажити GDExtension.
Анімація
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Анімація |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
AnimationMixer |
||||
Метод |
✔️ |
❌ |
❌ |
|
Skeleton3D |
||||
Метод |
✔️ |
❌ |
✔️ |
|
Сигнал |
❌ |
❌ |
❌ |
|
BoneAttachment3D |
||||
Метод |
✔️ |
✔️ |
✔️ |
Вузли GUI
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
AcceptDialog |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
Фізика
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
PhysicsShapeQueryParameters3D |
||||
Властивість |
❌ |
❌ |
❌ |
Примітка
У C# перелік PhysicsServer3D.G6DofJointAxisFlag порушує сумісність через те, як генератор прив’язок визначає префікс переліку. Нові члени були додані в GH-89851 до переліку, що призвело до перейменування членів переліку.
Рендеринг
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
RenderingDevice |
||||
Поле Enum |
✔️ |
❌ |
❌ |
|
Поле Enum |
✔️ |
❌ |
❌ |
|
Поле Enum |
✔️ |
❌ |
❌ |
|
Поле Enum |
✔️ |
❌ |
❌ |
|
Поле Enum |
✔️ |
❌ |
❌ |
|
Поле Enum |
✔️ |
❌ |
❌ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
RenderSceneBuffersRD |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
Примітка
У той час як значення полів enum у RenderingDevice.InitialAction і RenderingDevice.FinalAction змінилися, єдиний метод, який споживав їх (draw_list_begin), додав метод сумісності, який підтримує старі значення. Тож на практиці це не порушує сумісності.
Примітка
У C# перелік RenderingDevice.DriverResource порушує сумісність через те, як генератор прив’язок визначає префікс переліку. Нові члени були додані в GH-83452 до переліку, що призвело до перейменування членів переліку.
текст
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Шрифт |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
TextServer |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
TextServerExtension |
||||
Метод |
❌ |
❌ |
❌ |
Аудіо
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
AudioStreamPlaybackPolyphonic |
||||
Метод |
✔️ |
✔️ |
✔️ |
Плитка карти
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
TileData |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
XR
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
WebXRInterface |
||||
Метод |
✔️ |
❌ |
✔️ |
|
XRServer |
||||
Метод |
✔️ |
❌ |
❌ |
Додатки редактора
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
EditorInspectorPlugin |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
EditorPlugin |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
EditorSceneFormatImporterFBX |
||||
Тип перейменовано на |
❌ |
❌ |
❌ |
Зміни поведінки
У версії 4.3 було введено деякі зміни в поведінці, які можуть вимагати від вас коригування вашого проєкту.
Ядро
Примітка
Двійкову серіалізацію було змінено, щоб виправити деякі проблеми з серіалізацією скриптових об’єктів і типізованих масивів (GH-78219). Це порушує сумісність із кодуванням/декодуванням сценарію.
Примітка
PackedByteArray тепер може використовувати більш компактне кодування base64 для зберігання. Але компроміс полягає в тому, що це порушує сумісність, а це означає, що старіші версії Godot можуть не мати змоги відкрити ресурси, збережені 4.3 (GH-89186).
Щоб максимально підвищити сумісність, цей новий формат зберігання поки що буде ввімкнено лише для ресурсів і сцен, які містять великі PackedByteArrays. Підтримку цього нового формату також буде додано в оновленнях для старих версій Godot. Щойно всі підтримувані версії Godot зможуть читати новий формат, ми поступово припиняємо заходи щодо сумісності, а всі ресурси та сцени використовуватимуть новий формат зберігання.
Примітка
У C# реалізацію Transform3D.InterpolateWith було виправлено для використання правильного порядку операцій із застосуванням обертання перед масштабом (GH-89843).
Примітка
У C# реалізацію Aabb.GetSupport було виправлено для належного повернення вектора підтримки (GH-88919).
Примітка
У C# реалізація ToString для типів варіантів тепер за замовчуванням використовує 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). Існуючі проекти, які використовували властивість decal modulate, помітять зміни у своїх візуальних ефектах.
Примітка
Тепер реалізовано метод зворотного буфера глибини Z. Це може порушити сумісність для деяких шейдерів. Ознайомтеся зі статтею Представляємо Reverse Z (також вибачте, що зламав ваш шейдер), щоб отримати додаткову інформацію та вказівки щодо вирішення поширених сценаріїв.
Плитка карти
Android
Примітка
Дозволи Android більше не запитуються автоматично, оскільки це суперечить рекомендованим найкращим практикам (GH-87080). Використовуйте метод request_permission в OS і on_request_permissions_result сигнал MainLoop, щоб запитати дозволи та дочекатися відповіді користувача.