Файл .gextension
Введение
Файл .gdextension в вашем проекте содержит инструкции по загрузке GDExtension. Инструкции разделены на отдельные разделы. Эта страница даст вам краткий обзор различных доступных вам возможностей. Для получения вводной информации о начале работы с C++ (godot-cpp) ознакомьтесь с GDExtension C++ Example.
Раздел конфигурации
Свойство |
Тип |
Описание |
|---|---|---|
entry_symbol |
Строка |
Имя функции входа для инициализации GDExtension. Эта функция должна быть определена в файле |
compatibility_minimum |
Строка |
Минимальная совместимая версия. Это предотвращает загрузку расширений, зависящих от функций более новых версий Godot. Поддерживается только в Godot 4.1 и более поздних версиях |
compatibility_maximum |
Строка |
Максимальная совместимая версия. Это предотвращает загрузку расширения в более новых версиях Godot. Поддерживается только в Godot 4.3 и более поздних версиях |
reloadable |
Boolean |
Перезагружает расширение при перекомпиляции. Перезагрузка поддерживается для привязки godot-cpp в Godot 4.2 и более поздних версиях. Привязки других языков также могут поддерживать её, а могут и не поддерживать. Этот флаг следует использовать в основном для разработки или отладки расширения. |
android_aar_plugin |
Boolean |
GDExtension является частью v2 Android plugin. При экспорте этот флаг укажет редактору, что собственные общие библиотеки GDExtension экспортируются двоичными файлами AAR плагина Android. |
Раздел библиотек
В этом разделе можно указать пути к скомпилированным двоичным файлам библиотек GDExtension. Указав флаги функций, можно отфильтровать версию, которую следует загрузить и экспортировать вместе с игрой, в зависимости от того, какие флаги активны. Каждый флаг функции должен соответствовать флагам Godot или вашим собственным флагам экспорта, чтобы быть загруженным в экспортированную игру. Например, macos.debug означает, что игра будет загружена, если в Godot активны оба флага macos и debug. Каждая строка раздела обрабатывается сверху вниз.
Вот пример того, как это может выглядеть:
; A comment line starts with a semicolon. This line is ignored by the engine.
[libraries]
macos.debug = "./bin/libgdexample.macos.template_debug.dylib" ; Inline comments are also allowed.
macos.release = "./bin/libgdexample.macos.template_release.dylib"
windows.debug.x86_32 = "./bin/libgdexample.windows.template_debug.x86_32.dll"
windows.release.x86_32 = "./bin/libgdexample.windows.template_release.x86_32.dll"
windows.debug.x86_64 = "./bin/libgdexample.windows.template_debug.x86_64.dll"
windows.release.x86_64 = "./bin/libgdexample.windows.template_release.x86_64.dll"
linux.debug.x86_64 = "./bin/libgdexample.linux.template_debug.x86_64.so"
linux.release.x86_64 = "./bin/libgdexample.linux.template_release.x86_64.so"
linux.debug.arm64 = "./bin/libgdexample.linux.template_debug.arm64.so"
linux.release.arm64 = "./bin/libgdexample.linux.template_release.arm64.so"
linux.debug.rv64 = "./bin/libgdexample.linux.template_debug.rv64.so"
linux.release.rv64 = "./bin/libgdexample.linux.template_release.rv64.so"
Paths can be relative or absolute (starting with res://). Relative paths are recommended,
as they allow the extension to keep working if it's installed to a different folder than what's
specified in the path.
Записи сопоставляются по порядку, поэтому, если два набора тегов функций соответствуют одной и той же системе, обязательно поместите более конкретные из них первыми:
[libraries]
linux.release.editor.x86_64 = "./bin/libgdexample.linux.template_release.x86_64.so"
linux.release.x86_64 = "./bin/libgdexample.linux.noeditor.template_release.x86_64.so"
Вот списки некоторых доступных встроенных опций (для получения более подробной информации см. feature tags):
Running system (Ходовая система)
Flag (Флаг) |
Описание |
|---|---|
windows |
Операционная система Windows |
macOS |
Операционная система Mac |
linux |
Операционная система Linux |
bsd |
Операционная система BSD |
linux-bsd |
Операционная система Linux или BSD |
android |
Операционная система Android |
ios |
Операционная система iOS |
web |
Web-браузер |
Build (сборка)
Flag (Флаг) |
Описание |
|---|---|
debug |
Build with debugging features (editor builds always have debugging features) |
release |
Optimized build without debugging features |
editor |
Редактор сборки |
Архитектура
Flag (Флаг) |
Описание |
|---|---|
double (двойной) |
сборка с двойной точностью |
single (одинарный) |
сборка с одинарной точностью |
x86_64 |
64-битная сборка x86 |
arm64 |
64-битная сборка ARM |
rv64 |
64-битная сборка RISC-V |
risc-v |
Сборка RISC-V (любой разрядности) |
wasm-32 |
32-битная сборка WebAssembly |
Раздел иконок
По умолчанию Godot использует значок Node в панели сцен для узлов GDExtension. Пользовательский значок можно задать, указав его имя и путь к ресурсу в SVG-файле.
Например:
[icons]
GDExample = "res://icons/gd_example.svg"
The path should point to a 16×16 pixel SVG image, with two options enabled on the image in the Import dock:
Editor > Scale with Editor Scale.
Editor > Convert Colors with Editor Theme.
Enabling both options ensures the icon behaves as closely as possible to the stock editor icons. Read the guide for creating icons for more information.
Раздел зависимостей
In this section, you set the paths of the GDExtension dependencies. This is used internally to export the dependencies when exporting your game executable. You are able to set which dependency is loaded depending on the feature flags of the exported executable. In addition, you are able to set an optional subdirectory to move your dependencies into. If no path is supplied, Godot will move the libraries into the same directory as your game executable.
Предупреждение
On macOS, it is necessary to have shared libraries inside a folder called Frameworks
with a directory structure like this: Game.app/Contents/Frameworks.
[dependencies]
macos.debug = {
"res://bin/libdependency.macos.template_debug.framework" : "Contents/Frameworks"
}
macos.release = {
"res://bin/libdependency.macos.template_release.framework" : "Contents/Frameworks"
}
windows.debug = {
"res://bin/libdependency.windows.template_debug.x86_64.dll" : "",
"res://bin/libdependency.windows.template_debug.x86_32.dll" : ""
}
windows.release = {
"res://bin/libdependency.windows.template_release.x86_64.dll" : "",
"res://bin/libdependency.windows.template_release.x86_32.dll" : ""
}
linux.debug = {
"res://bin/libdependency.linux.template_debug.x86_64.so" : "",
"res://bin/libdependency.linux.template_debug.arm64.so" : "",
"res://bin/libdependency.linux.template_debug.rv64.so" : ""
}
linux.release = {
"res://bin/libdependency.linux.template_release.x86_64.so" : "",
"res://bin/libdependency.linux.template_release.arm64.so" : "",
"res://bin/libdependency.linux.template_release.rv64.so" : ""
}