Work in progress
The content of this page was not yet updated for Godot
4.4
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/pluginsIhres 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/pluginsund 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_PATHShinzu. 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_CFLAGSdie 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.aDateien für dasdebugundrelease-Target erstellen. Abhängig von Ihren Bedürfnissen, wählen Sie eine oder beide. Wenn Sie sowohl Debug- als auch Release-.aDateien 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
gdiplauten (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
configund dessen Felder sind erforderlich und wie folgt definiert:name: Name des Plugins
binary: dies sollte der Dateipfad der Plugin-Bibliothek (
aoderxcframework) 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.aoderres://some_path/MyPlugin.xcframework.Falls Sie eine Multitarget-Bibliothek benötigen, sollte der Dateiname
MyPlugin.alauten und die.a-Dateien sollten alsMyPlugin.release.aundMyPlugin.debug.abenannt werden.Falls Sie Multitarget-
xcframework-Bibliotheken verwenden, sollte deren Dateiname in der KonfigurationMyPlugin.xcframeworklauten. Die.xcframeworkDateien sollten alsMyPlugin.release.xcframeworkundMyPlugin.debug.xcframeworkbenannt werden.
Die Abschnitte
dependenciesundplistsind 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.plistvorhanden sein sollten.Jede Zeile sollte folgendem Muster folgen:
KeyName:KeyType=KeyValueUnterstützte Values für
KeyTypesindstring,integer,boolean,raw,string_inputWenn kein Typ verwendet wird (z.B.:
KeyName="KeyValue"), wird der Typstringverwendet.Wenn der
raw-Typ verwendet wird, wird der Wert für den entsprechenden Key in derInfo.plistgespeichert, wie er ist.Wenn der Typ
string_inputverwendet wird, können Sie den Wert im Exportfenster ändern.