Work in progress
The content of this page was not yet updated for Godot
4.2
and may be outdated. If you know how to improve this page or you can confirm
that it's up to date, feel free to open a pull request.
Erstellen von IOS-Plugins¶
Auf dieser Seite wird erklärt, was iOS-Plugins für Sie tun können, wie Sie ein vorhandenes Plugin verwenden und wie Sie ein neues programmieren können.
iOS Plugins erlauben die Nutzung von Drittanbieterbibliotheken, sowie iOS spezifische Features wie In-App Einkäufe, GameCenter-Integration, ARKit Unterstützung und mehr.
Laden und Verwenden eines vorhandenen Plugins¶
Ein iOS-Plugin benötigt eine .gdip
-Konfigurationsdatei, eine Binärdatei, die entweder eine statische .a
-Bibliothek oder eine .xcframework
mit statischen .a
-Bibliotheken sein kann, und möglicherweise weitere Abhängigkeiten. Um sie zu benutzen, müssen Sie:
Die Dateien des Plugins in das Verzeichnis
res://ios/plugins
Ihres Godot-Projekts kopieren. Sie können die Dateien auch in einem Unterverzeichnis gruppieren, z. B.res://ios/plugins/my_plugin
.Der Godot-Editor erkennt und importiert automatisch die
.gdip
-Dateien inres://ios/plugins
und seinen Unterverzeichnissen.Sie können erkannte Plugins finden und aktivieren, indem Sie zu Projekt -> Exportieren... -> iOS gehen und auf dem Optionen-Tab zum Abschnitt Plugins scrollen.
Wenn ein Plugin aktiv ist, können Sie mit Engine.get_singleton()
darauf zugreifen:
if Engine.has_singleton("MyPlugin"):
var singleton = Engine.get_singleton("MyPlugin")
print(singleton.foo())
Bemerkung
Die Dateien des Plugins müssen sich im Verzeichnis res://ios/plugins/
oder einem Unterverzeichnis befinden, da der Godot-Editor sie sonst nicht automatisch erkennt.
Erstellen eines iOS-Plugins¶
Im Kern ist ein Godot-iOS-Plugin eine iOS-Bibliothek (.a-Archivdatei oder .xcframework mit statischen Bibliotheken) mit den folgenden Anforderungen:
Die Bibliothek muss eine Abhängigkeit von den Headern der Godot-Engine haben.
Die Bibliothek muss eine
.gdip
-Konfigurationsdatei enthalten.
Ein iOS-Plugin kann die gleiche Funktionalität wie ein Godot-Modul haben, bietet aber mehr Flexibilität und erfordert keinen Rebuild der Engine.
Hier sind die Schritte, um mit der Entwicklung eines Plugins zu beginnen. Wir empfehlen die Verwendung der Entwicklungsumgebung Xcode.
Siehe auch
Die Godot iOS Plugins.
Die Godot iOS Plugin-Vorlage bietet Ihnen alle notwendigen Grundlagen, um Ihr iOS-Plugin zu starten.
Um ein iOS-Plugin zu erstellen:
Erstellen Sie eine statische Objective-C-Bibliothek für Ihr Plugin in Xcode.
Fügen Sie die Godot-Engine-Header-Dateien als Abhängigkeit für Ihre Plugin-Bibliothek in
HEADER_SEARCH_PATHS
hinzu. Sie finden diese Einstellung auf der RegisterkarteBuild Settings
:Laden Sie den Quellcode der Godot-Engine von der Godot GitHub-Seite herunter.
Starten Sie SCons, um Header zu erzeugen. Sie können den Prozess lernen, indem Sie Kompilieren für iOS lesen. Sie müssen nicht warten, bis die Kompilierung abgeschlossen ist, um weiterzumachen, da die Header generiert werden, bevor die Engine mit der Kompilierung beginnt.
Sie sollten die gleichen Header-Dateien für iOS-Plugins und für die iOS-Exportvorlage verwenden.
Geben Sie auf dem
Build Settings
-Tab unterOTHER_CFLAGS
die Kompilierungsflags für Ihre statische Bibliothek an. Die wichtigsten sind-fcxx-modules
,-fmodules
, und-DDEBUG
, wenn Sie Debug-Unterstützung benötigen. Andere Flags sollten die gleichen sein, die Sie zum Kompilieren von Godot verwenden. Zum Beispiel:
-DPTRCALL_ENABLED -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTYPED_METHOD_BIND
Fügen Sie die erforderliche Logik für Ihr Plugin hinzu und erstellen Sie Ihre Bibliothek, um eine
.a
-Datei zu erzeugen. Wahrscheinlich müssen Sie.a
Dateien für dasdebug
undrelease
-Target erstellen. Abhängig von Ihren Bedürfnissen, wählen Sie eine oder beide. Wenn Sie sowohl Debug- als auch Release-.a
Dateien benötigen, sollte ihr Name folgendem Muster entsprechen:[PluginName].[TargetType].a
. Sie können die statische Bibliothek auch mit Ihrer SCons-Konfiguration erstellen.Das iOS-Plugin-System unterstützt auch
.xcframework
-Dateien. Um eine solche zu erzeugen, können Sie einen Befehl wie den folgenden verwenden:
xcodebuild -create-xcframework -library [DeviceLibrary].a -library [SimulatorLibrary].a -output [PluginName].xcframework
Erstellen Sie eine Godot iOS Plugin-Konfigurationsdatei, damit das System Ihr Plugin erkennen und laden kann:
Die Erweiterung der Konfigurationsdatei muss
gdip
lauten (z.B.:MyPlugin.gdip
).Das Konfigurationsdateiformat lautet wie folgt:
[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"
Der Abschnitt
config
und dessen Felder sind erforderlich und wie folgt definiert:name: Name des Plugins
binary: dies sollte der Dateipfad der Plugin-Bibliothek (
a
oderxcframework
) sein.Der Dateipfad kann relativ sein (z.B.:
MyPlugin.a
,MyPlugin.xcframework
). In diesem Fall ist er relativ zu dem Verzeichnis, in dem sich diegdip
-Datei befindet.Der Dateipfad kann absolut sein:
res://some_path/MyPlugin.a
oderres://some_path/MyPlugin.xcframework
.Falls Sie eine Multitarget-Bibliothek benötigen, sollte der Dateiname
MyPlugin.a
lauten und die.a
-Dateien sollten alsMyPlugin.release.a
undMyPlugin.debug.a
benannt werden.Falls Sie Multitarget-
xcframework
-Bibliotheken verwenden, sollte deren Dateiname in der KonfigurationMyPlugin.xcframework
lauten. Die.xcframework
Dateien sollten alsMyPlugin.release.xcframework
undMyPlugin.debug.xcframework
benannt werden.
Die Abschnitte
dependencies
undplist
sind optional und wie folgt definiert:Abhängigkeiten:
linked: enthält eine Liste von iOS-Frameworks, mit denen die iOS-Anwendung verknüpft werden soll.
embedded: enthält eine Liste von iOS-Frameworks oder -Bibliotheken, die sowohl gelinkt als auch in die resultierende iOS-Anwendung eingebettet werden sollen.
system: enthält eine Liste der iOS-System-Frameworks, die für das Plugin erforderlich sind.
capabilities: enthält eine Liste von iOS-Fähigkeiten, die für das Plugin erforderlich sind. Eine Liste der verfügbaren Fähigkeiten finden Sie auf der Dokumentationsseite Apple UIRequiredDeviceCapabilities.
Dateien: enthält eine Liste von Dateien, die beim Export kopiert werden sollen. Dies ist nützlich für Datendateien oder Bilder.
linker_flags: enthält eine Liste von Linker-Flags, die beim Exportieren des Plugins zum Xcode-Projekt hinzugefügt werden.
plist: sollte Keys und Values haben, die in der Datei
Info.plist
vorhanden sein sollten.Jede Zeile sollte folgendem Muster folgen:
KeyName:KeyType=KeyValue
Unterstützte Values für
KeyType
sindstring
,integer
,boolean
,raw
,string_input
Wenn kein Typ verwendet wird (z.B.:
KeyName="KeyValue"
), wird der Typstring
verwendet.Wenn der
raw
-Typ verwendet wird, wird der Wert für den entsprechenden Key in derInfo.plist
gespeichert, wie er ist.Wenn der Typ
string_input
verwendet wird, können Sie den Wert im Exportfenster ändern.