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.

Створення плагінів iOS

На цій сторінці пояснюється, що плагіни iOS можуть зробити для вас, як використовувати наявний плагін і кроки для кодування нового.

Плагіни iOS дозволяють використовувати бібліотеки сторонніх розробників і підтримують такі функції iOS, як покупки через програму, інтеграція з GameCenter, підтримка ARKit тощо.

Завантаження та використання наявного плагіна

Для плагіна iOS потрібен файл конфігурації .gdip, двійковий файл, який може бути або .a статичною бібліотекою, .xcframework, що містить .a статичні бібліотеки, і, можливо, інші залежності. Щоб ним скористатися, потрібно:

  1. Скопіюйте файли плагіна в каталог res://ios/plugins вашого проекту Godot. Ви також можете групувати файли в підкаталозі, наприклад res://ios/plugins/my_plugin.

  2. Редактор Godot автоматично виявляє та імпортує файли .gdip у res://ios/plugins та його підкаталоги.

  3. Ви можете знайти та активувати виявлені плагіни, перейшовши в «Проект» -> «Експорт...» -> «iOS» і перейшовши на вкладку «Параметри» до розділу «Плагіни».

../../../_images/ios_export_preset_plugins_section.png

Коли плагін активний, ви можете отримати до нього доступ за допомогою 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:

  1. Створіть статичну бібліотеку Objective-C для свого плагіна в Xcode.

  2. Додайте файли заголовків механізму Godot як залежність для вашої бібліотеки плагінів у HEADER_SEARCH_PATHS. Ви можете знайти налаштування на вкладці Налаштування збірки:

    • Завантажте вихідний код механізму Godot зі сторінки Godot GitHub.

    • Запустіть SCons, щоб створити заголовки. Ви можете дізнатися про процес, прочитавши Компіляція для iOS. Вам не потрібно чекати завершення компіляції, щоб рухатися вперед, оскільки заголовки генеруються до того, як двигун почне компілювати.

    • Ви повинні використовувати однакові файли заголовків для плагінів iOS і для шаблону експорту iOS.

  3. На вкладці Налаштування збірки вкажіть позначки компіляції для вашої статичної бібліотеки в OTHER_CFLAGS. Найважливішими є -fcxx-modules, -fmodules і -DDEBUG, якщо вам потрібна підтримка налагодження. Інші прапорці мають бути такими ж, які ви використовуєте для компіляції Godot. наприклад:

-DPTRCALL_ENABLED -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTYPED_METHOD_BIND
  1. Додайте необхідну логіку для свого плагіна та створіть бібліотеку для створення файлу .a. Ймовірно, вам знадобиться створити цільові файли debug і release .a. Залежно від ваших потреб виберіть одне або обидва. Якщо вам потрібні як файли налагодження, так і файли випуску .a, їх ім’я має відповідати наступному шаблону: [PluginName].[TargetType].a. Ви також можете створити статичну бібліотеку за допомогою конфігурації SCons.

  2. Система плагінів iOS також підтримує файли .xcframework. Щоб створити його, ви можете використати таку команду:

xcodebuild -create-xcframework -library [DeviceLibrary].a -library [SimulatorLibrary].a -output [PluginName].xcframework
  1. Створіть файл конфігурації плагіна 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, ви зможете змінити значення у вікні експорту.