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, що містить статичні бібліотеки) з такими вимогами:
Бібліотека повинна мати залежність від заголовків механізму Godot.
Бібліотека має поставлятися з файлом конфігурації
.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"
The config section and fields are required and defined as follow:
name: name of the plugin
binary: this should be the filepath of the plugin library (
aorxcframework) file.
The filepath can be relative (e.g.:
MyPlugin.a,MyPlugin.xcframework) in which case it's relative to the directory where thegdipfile is located.The filepath can be absolute:
res://some_path/MyPlugin.aorres://some_path/MyPlugin.xcframework.In case you need multitarget library usage, the filename should be
MyPlugin.aand.afiles should be named asMyPlugin.release.aandMyPlugin.debug.a.In case you use multitarget
xcframeworklibraries, their filename in the configuration should beMyPlugin.xcframework. The.xcframeworkfiles should be named asMyPlugin.release.xcframeworkandMyPlugin.debug.xcframework.
The dependencies and plist sections are optional and defined as follow:
dependencies:
linked: contains a list of iOS frameworks that the iOS application should be linked with.
embedded: contains a list of iOS frameworks or libraries that should be both linked and embedded into the resulting iOS application.
system: contains a list of iOS system frameworks that are required for plugin.
capabilities: contains a list of iOS capabilities that is required for plugin. A list of available capabilities can be found at Apple UIRequiredDeviceCapabilities documentation page.
files: contains a list of files that should be copied on export. This is useful for data files or images.
linker_flags: contains a list of linker flags to add to the Xcode project when exporting the plugin.
plist: should have keys and values that should be present in
Info.plistfile.
Each line should follow pattern:
KeyName:KeyType=KeyValueSupported values for
KeyTypearestring,integer,boolean,raw,string_inputIf no type is used (e.g.:
KeyName="KeyValue")stringtype will be used.If
rawtype is used value for corresponding key will be stored inInfo.plistas is.If
string_inputtype is used you will be able to modify value in Export window.