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...
Створення плагінів iOS
На цій сторінці пояснюється, що плагіни iOS можуть зробити для вас, як використовувати наявний плагін і кроки для кодування нового.
Плагіни iOS дозволяють використовувати бібліотеки сторонніх розробників і підтримують такі функції iOS, як покупки через програму, інтеграція з GameCenter, підтримка ARKit тощо.
Завантаження та використання наявного плагіна
Для плагіна iOS потрібен файл конфігурації .gdip
, двійковий файл, який може бути або .a
статичною бібліотекою, .xcframework
, що містить .a
статичні бібліотеки, і, можливо, інші залежності. Щоб ним скористатися, потрібно:
Скопіюйте файли плагіна в каталог
res://ios/plugins
вашого проекту Godot. Ви також можете групувати файли в підкаталозі, наприкладres://ios/plugins/my_plugin
.Редактор Godot автоматично виявляє та імпортує файли
.gdip
уres://ios/plugins
та його підкаталоги.Ви можете знайти та активувати виявлені плагіни, перейшовши в «Проект» -> «Експорт...» -> «iOS» і перейшовши на вкладку «Параметри» до розділу «Плагіни».

Коли плагін активний, ви можете отримати до нього доступ за допомогою Engine.get_singleton()
:
if Engine.has_singleton("MyPlugin"):
var singleton = Engine.get_singleton("MyPlugin")
print(singleton.foo())
Примітка
Файли плагіна мають бути в каталозі res://ios/plugins/
або підкаталозі, інакше редактор Godot не виявить їх автоматично.
Створення плагіна iOS
За своєю суттю плагін Godot для iOS — це бібліотека iOS (.a архівний файл або .xcframework, що містить статичні бібліотеки) з такими вимогами:
Бібліотека повинна мати залежність від заголовків механізму Годо.
Бібліотека має поставлятися з файлом конфігурації
.gdip
.
Плагін iOS може мати таку саму функціональність, як і модуль Godot, але забезпечує більшу гнучкість і не потребує переналаштування механізму.
Ось кроки для початку розробки плагіна. Ми рекомендуємо використовувати Xcode як середовище розробки.
Дивись також
Плагіни для iOS від Godot.
Шаблон плагіна Godot для iOS дає вам усі шаблони, необхідні для запуску плагіна для iOS.
Створити плагін для iOS:
Створіть статичну бібліотеку Objective-C для свого плагіна в Xcode.
Додайте файли заголовків механізму Godot як залежність для вашої бібліотеки плагінів у
HEADER_SEARCH_PATHS
. Ви можете знайти налаштування на вкладціНалаштування збірки
:Завантажте вихідний код механізму Godot зі сторінки Godot GitHub.
Запустіть SCons, щоб створити заголовки. Ви можете дізнатися про процес, прочитавши Компіляція для iOS. Вам не потрібно чекати завершення компіляції, щоб рухатися вперед, оскільки заголовки генеруються до того, як двигун почне компілювати.
Ви повинні використовувати однакові файли заголовків для плагінів iOS і для шаблону експорту iOS.
На вкладці
Налаштування збірки
вкажіть позначки компіляції для вашої статичної бібліотеки вOTHER_CFLAGS
. Найважливішими є-fcxx-modules
,-fmodules
і-DDEBUG
, якщо вам потрібна підтримка налагодження. Інші прапорці мають бути такими ж, які ви використовуєте для компіляції Godot. наприклад:
-DPTRCALL_ENABLED -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTYPED_METHOD_BIND
Додайте необхідну логіку для свого плагіна та створіть бібліотеку для створення файлу
.a
. Ймовірно, вам знадобиться створити цільові файлиdebug
іrelease
.a
. Залежно від ваших потреб виберіть одне або обидва. Якщо вам потрібні як файли налагодження, так і файли випуску.a
, їх ім’я має відповідати наступному шаблону:[PluginName].[TargetType].a
. Ви також можете створити статичну бібліотеку за допомогою конфігурації SCons.Система плагінів iOS також підтримує файли
.xcframework
. Щоб створити його, ви можете використати таку команду:
xcodebuild -create-xcframework -library [DeviceLibrary].a -library [SimulatorLibrary].a -output [PluginName].xcframework
Створіть файл конфігурації плагіна Godot iOS, щоб допомогти системі виявити та завантажити ваш плагін:
Розширення файлу конфігурації має бути
gdip
(наприклад:MyPlugin.gdip
).Формат файлу конфігурації такий:
[config] name="MyPlugin" binary="MyPlugin.a" initialization="init_my_plugin" deinitialization="deinit_my_plugin" [dependencies] linked=[] embedded=[] system=["Foundation.framework"] capabilities=["arkit", "metal"] files=["data.json"] linker_flags=["-ObjC"] [plist] PlistKeyWithDefaultType="Some Info.plist key you might need" StringPlistKey:string="String value" IntegerPlistKey:integer=42 BooleanPlistKey:boolean=true RawPlistKey:raw=" <array> <string>UIInterfaceOrientationPortrait</string> </array> " StringPlistKeyToInput:string_input="Type something"
Розділ і поля
config
є обов’язковими та визначені таким чином:name: назва плагіна
бінарний: це має бути шлях до файлу бібліотеки плагінів (
a
абоxcframework
).Шлях до файлу може бути відносним (наприклад,
MyPlugin.a
,MyPlugin.xcframework
), і в цьому випадку він відноситься до каталогу, де знаходиться файлgdip
.Шлях до файлу може бути абсолютним:
res://some_path/MyPlugin.a
абоres://some_path/MyPlugin.xcframework
.Якщо вам потрібно використовувати багатоцільову бібліотеку, ім’я файлу має бути
MyPlugin.a
, а файли.a
мають називатисяMyPlugin.release.a
іMyPlugin.debug.a
.Якщо ви використовуєте багатоцільові бібліотеки
xcframework
, їхня назва файлу в конфігурації має бутиMyPlugin.xcframework
. Файли.xcframework
повинні мати назвиMyPlugin.release.xcframework
іMyPlugin.debug.xcframework
.
Розділи
dependencies
іplist
є необов’язковими та визначені таким чином:залежності:
linked: містить список фреймворків iOS, з якими потрібно пов’язати програму iOS.
вбудований: містить список фреймворків або бібліотек iOS, які мають бути пов’язані та вбудовані в отриману програму iOS.
system: містить список системних фреймворків iOS, необхідних для плагіна.
capabilities: містить список можливостей iOS, необхідних для плагіна. Список доступних можливостей можна знайти на сторінці документації Apple UIRequiredDeviceCapabilities.
files: містить список файлів, які слід скопіювати під час експорту. Це корисно для файлів даних або зображень.
linker_flags: містить список прапорів компонувальника, які потрібно додати до проекту Xcode під час експорту плагіна.
plist: має містити ключі та значення, які мають бути присутніми у файлі
Info.plist
.Кожен рядок має відповідати шаблону:
KeyName:KeyType=KeyValue
Підтримувані значення для KeyType: string, integer, boolean, raw, string_input
Якщо тип не використовується (наприклад:
KeyName="KeyValue"
), буде використано типstring
.Якщо використовується тип
raw
, значення для відповідного ключа буде збережено вInfo.plist
як є.Якщо використовується тип
string_input
, ви зможете змінити значення у вікні експорту.