Externe Dateien
Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 1 von 65.
Reale Programme sind in mehrere Dateien aufgeteilt. Jede .gd-Datei ist ein Skript, und ein Skript kann ein anderes verwenden.
Schreibe class_name an den Anfang eines Skripts, um ihm einen globalen Namen zu geben. Jedes andere Skript im Projekt kann diesen Namen dann direkt verwenden, ohne eine Importzeile:
# greeter.gd
class_name Greeter
extends RefCounted
static func greet(player_name: String) -> String:
return "Hello, " + player_name + "!"static func definiert eine Funktion, die du über den Skriptnamen aufrufst, Greeter.greet("Ada"). extends RefCounted ist die einfache Basisklasse für Skripte, die keine Nodes sind; die nächsten Lektionen erklären das.
# main.gd
extends Node
func _ready():
print(Greeter.greet("Ada")) # Hello, Ada!Das Programm startet weiterhin in _ready() von main.gd. Die anderen Dateien definieren nur Dinge, die main.gd verwendet.
Godot benennt Dateien in snake_case und class_name in PascalCase: class_name Greeter befindet sich in greeter.gd. Behalte eine Klasse pro Datei.
Ein Skript ohne class_name kann mit seinem Pfad über preload() geladen werden:
const Helpers = preload("res://helpers.gd")
func _ready():
print(Helpers.shout("hi")) # HI!Aufgabe
EinfachSchreibe die statische Funktion greet in greeter.gd. Sie nimmt einen Spielernamen entgegen und gibt Hello, NAME! zurück. Wenn der Name leer ist, gibt sie Hello, friend! zurück.
Der bereitgestellte Code liest ein, wie viele Namen folgen, und gibt dann für jeden davon Greeter.greet() aus. Für die Namen Ada und eine leere Zeile gibt er Folgendes aus:
Hello, Ada!
Hello, friend!Dein Code gehört in greeter.gd. main.gd enthält den bereitgestellten Ein-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
extends Node
func _ready():
# Vorgegebener Ein-/Ausgabecode: unverändert lassen
var count := int(OS.read_string_from_stdin())
for i in count:
print(Greeter.greet(OS.read_string_from_stdin()))
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort selfMethodenEigenschaftenKonstruktor (_init)Wiederholung – Einfacher Taschenrechner4Polymorphie
Methodenüberschreibung erneut betrachtetDuck-TypisierungAbstrakte Klassen und MethodenSchnittstellendesignRückblick – Formrechner2Klassenattribute
Instanz- vs. statische VariablenStatische FunktionenProperty-SetterProperty-GetterPrivat nach KonventionWiederholung – Bankkontenverwaltung5Kapselung
Öffentliche und private MemberValidierung mit SetternInformationsverbergenSchreibgeschützte EigenschaftenRückblick – System zur Schülerverwaltung8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungInnere KlassenNodes als KomponentenRefCounted vs. NodeEnums in Klassen11Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungVererbungskettenTypprüfungen mit isWiederholung – Mitarbeiterhierarchie6Spezielle Methoden
Einführung in virtuelle MethodenDie _to_string-MethodeBenutzerdefinierte IteratorenRückblick – Benutzerdefinierte Liste9Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBeobachter-MusterStrategie-Muster12Abschließende Herausforderungen
E-Learning-PlattformBankensystemEntwicklung von SpielfigurenFahrzeugvermietungÜbe selbstständig: Online-GDScript-Compiler