Inhaltsverzeichnis

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:

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.

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