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.0 до Godot 4.1
Для більшості ігор і програм, створених з версією 4.0, перехід на 4.1 має бути відносно безпечним. На цій сторінці описано все, на що потрібно звернути увагу під час міграції вашого проекту.
Ломальні зміни
Якщо ви переходите з 4.0 на 4.1, перелічені тут критичні зміни можуть вплинути на вас. Зміни згруповано за сферами/системами.
Попередження
API GDExtension повністю порушує сумісність у версії 4.1, тому його не включено в таблицю нижче. Перегляньте розділ Оновлення GDExtension до 4.1 для отримання додаткової інформації.
У цій статті вказується, чи кожна порушна зміна впливає на GDScript і чи є порушна зміна C# бінарною сумісністю чи сумісною з джерелом:
Сумісність із двійковими файлами – наявні двійкові файли завантажуватимуться та успішно виконуватимуться без повторної компіляції, а поведінка під час виконання не зміниться.
Сумісність із вихідним кодом – вихідний код буде успішно скомпільовано без змін під час оновлення Godot.
Ядро
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Основа |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Об'єкт |
||||
Метод |
✔️ |
❌ |
❌ |
|
Transform3D |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Відмінити Повторити |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
WorkerThreadPool |
||||
Метод |
✔️ |
❌ |
✔️ |
Анімація
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
AnimationNode |
||||
Метод |
❌ |
❌ |
❌ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
AnimationNodeStateMachinePlayback |
||||
Метод |
✔️ |
❌ |
❌ |
2D вузли
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Дотримуйтеся шляху 2D |
||||
Властивість |
❌ |
❌ |
❌ |
3D вузли
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Geometry3D |
||||
Метод |
✔️ |
✔️ |
❌ |
|
MeshInstance3D |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Node3D |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
Вузли GUI
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Редагування коду |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Метод |
✔️ |
✔️ |
✔️ |
|
Дерево |
||||
Метод |
✔️ |
✔️ |
✔️ |
Фізика
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Area2D |
||||
Властивість |
❌ |
❌ |
❌ |
|
Area3D |
||||
Властивість |
❌ |
❌ |
❌ |
|
PhysicsDirectSpaceState2D |
||||
Метод |
❌ |
❌ |
❌ |
|
PhysicsDirectSpaceState3D |
||||
Метод |
❌ |
❌ |
❌ |
Рендеринг
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
RDShaderFile |
||||
Метод |
✔️ |
❌ |
❌ |
|
RenderingDevice |
||||
Метод |
✔️ |
✔️ |
❌ |
|
RenderingServer |
||||
Метод |
✔️ |
❌ |
❌ |
|
Інструмент SurfaceTool |
||||
Метод |
✔️ |
✔️ |
❌ |
Робота у мережі
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
WebRTCPeerConnectionExtension |
||||
Метод |
✔️ |
❌ |
✔️ |
Додатки редактора
Зміна |
Сумісність з GDScript |
C# двійковий сумісний |
Сумісність із вихідним кодом C# |
Введено |
|---|---|---|---|---|
Плагін AnimationTrackEdit |
||||
Тип |
❌ |
❌ |
❌ |
|
Інтерфейс редактора |
||||
Тип |
✔️ |
❌ |
❌ |
|
Метод |
✔️ |
❌ |
❌ |
|
Метод |
✔️ |
❌ |
❌ |
|
EditorResourcePreviewGenerator |
||||
Метод |
❌ |
❌ |
❌ |
|
Метод |
❌ |
❌ |
❌ |
|
EditorUndoRedoManager |
||||
Метод |
✔️ |
✔️ |
✔️ |
Зміни поведінки
У версії 4.1 було введено деякі зміни в поведінці, які можуть вимагати від вас коригування вашого проєкту.
Зміна |
Введено |
|---|---|
SubViewportContainer |
|
Коли події введення мають досягати SubViewports та їхніх дітей, |
|
Багатошарові вузли |
|
Вікно перегляду |
|
Вузли |
Оновлення GDExtension до 4.1
Щоб виправити серйозну помилку, у Godot 4.1 нам довелося значною мірою порушити двійкову сумісність і меншою мірою сумісність з джерелами.
Це означає, що GDExtensions, створені для Godot 4.0, потрібно буде перекомпілювати для Godot 4.1 (використовуючи гілку 4.1 godot-cpp), з невеликою зміною їх вихідного коду.
У Godot 4.0 ваша функція "entry_symbol" виглядає приблизно так:
GDExtensionBool GDE_EXPORT example_library_init(const GDExtensionInterface *p_interface, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
godot::GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization);
init_obj.register_initializer(initialize_example_module);
init_obj.register_terminator(uninitialize_example_module);
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
return init_obj.init();
}
Однак для Godot 4.1 це має виглядати так:
GDExtensionBool GDE_EXPORT example_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
init_obj.register_initializer(initialize_example_module);
init_obj.register_terminator(uninitialize_example_module);
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
return init_obj.init();
}
Є дві невеликі зміни:
Перший аргумент змінюється з
const GDExtensionInterface *p_interfaceнаGDExtensionInterfaceGetProcAddress p_get_proc_addressКонструктор для змінної init_obj тепер отримує
p_get_proc_addressяк перший параметр
Також потрібно додати додатковий рядок compatibility_minimum до вашого файлу .gdextension, щоб він виглядав приблизно так:
[configuration]
entry_symbol = "example_library_init"
compatibility_minimum = 4.1
Це дає Godot знати, що ваше GDExtension оновлено та безпечно завантажувати у Godot 4.1.