====== Plugins ====== Mit Plugins ist es leicht den Funktionsumfang von Godot zu erweitern. Das Interessante dabei ist, dass wir weiter mit GDScript arbeiten können und nichts kompilieren müssen. Godot muss nicht mal neugestartet werden, um das Plugin benutzen zu können. Üblicher Weise werden Plugins mit dem jeweiligen Programm verknüpft, wodurch sie künftig ständig aktiv sind. Godot geht hier einen anderen Weg. Die benötigten Plugins müssen ins jeweilige Projekt kopiert werden. Aber lassen wir uns doch zunächst einmal ein Plugin erstellen. ===== Vorbereitungen ===== Zunächst starten wir Godot und erstellen ein neues Projekt, eigens für unser Plugin. Als erstes brauchen wir ein Verzeichnis in welches die Plugins zu finden sind, dies müssen wir zwingend "addons" nennen. Panel Dateisystem => Zeile %%"res://"%% => rechte Maustaste => Pulldown-Menü => Neuer Ordner...\\ Im Dialogfenster "addons" eingeben und bestätigen. Als nächstes legen wir im Ordner addons einen weiteren Ordner mit dem eigentlichen namen des Plugins an. Panel Dateisystem => Zeile "addons" => rechte Maustaste => Pulldown-Menü => Neuer Ordner ====== Node ====== ===== plugin.cfg ===== Wechseln wir nun zum Scripteditor\\ ScriptMenü Datei => Neue Textdatei... Im Speicherdialogfenster wechseln wir in das eben erstellte Verzeichnis /addons/MyPlugin\\ Wichtig, als Dateinamen geben wir unter Datei "plugin.cfg" an Als Text fügen wir dies hier ein: [plugin] name="MyTest" description="Dies ist ein Testbutton" author="MeinName" version="1.0.0" script="MyPlugin.gd" ScriptMenü Datei => Speichern ===== Initialisierungsdatei ===== mit der Zuweisung script="MyPlugin.gd" zeigen wir auf die nächste Datei welche wir noch anlegen müssen. ScriptMenü Datei => Neue Textdatei...\\ Datei “MyPlugin.gd“ Dieses Skript steuert das Verhalten beim einbinden des Plugins ins System, beziehungsweise das Entfernen beim Beenden. Als Text fügen wir dies hier ein: tool extends EditorPlugin func _enter_tree(): # Initialisierung des Plugins add_custom_type("MyButton", "Button", preload("button.gd"), preload("icon.png")) func _exit_tree(): # Entfernen aus dem System beim Beenden remove_custom_type("MyButton") ScriptMenü Datei => Speichern Das entscheidende Schlüsselwort in diesem Skript ist “tool“ welches veranlasst, den Code bereits nach dem Speichern auszuführen. add_custom_type() hat folgende Parameter: * Name des Plugins * Basistyp welchen wir erweitern wollen * Eigentliche Skriptdatei * Bilddatei des Icons (32x32 Pixel groß) ===== Das eigentliche Pluginskript ===== ...legen wir als nächstes an:\\ ScriptMenü Datei => Neue Textdatei...\\ Datei “button.gd“ Als Text fügen wir dies hier ein: tool extends Button func _enter_tree(): connect("pressed", self, "clicked") func clicked(): print("Der Button wurde gedrückt") In diesem einfachen Beispiel weisen wir dem Ereignis "pressed" eine Funktion zu welche hier ebenfalls definiert ist. Das Icon müssen wir ins selbige Verzeichnis kopieren. Jetzt müssen wir noch das neue Node(Plugin) aktivieren:\\ Menü(Projekt) => Menüpunkt(Projekteinstellungen) => Dialogfenster => Reiter (Erweiterungen)\\ Auf diesem Panel werden alle Plugins im Verzeichnis “addons“ aufgelistet.\\ Über die Listbox(Status) = Active binden wir das Plugin ins System ein. {{:godot:syntax:projekteinstellung_erweiterungen.png}} ====== Dock ====== ===== plugin.cfg ===== [plugin] name="MyTab" description="Dies ist ein TestTab" author="MeinName" version="1.0.0" script="MyTab.gd" ===== Initialisierungsdatei ===== tool extends EditorPlugin var dock # Unsere Szene func _enter_tree(): dock = preload("res://addons/MyTab/my_tab.tscn").instance() add_control_to_dock(DOCK_SLOT_LEFT_UL, dock) func _exit_tree(): remove_control_from_docks(dock) # Löschen Dock dock.free() # Löschen Szene aus Speicher