Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
GD0202: The parameter of the delegate signature of the signal is not supported
Regel-ID |
GD0202 |
Kategorie |
Verwendung |
Fix führt oder führt nicht zu Kompatibilitätsbruch |
Kompatibilitätsbruch - Wenn der Parametertyp geändert wird Kein Kompatibilitätsbruch - Wenn das Attribut |
Standardmäßig aktiviert |
Ja |
Ursache
Ein nicht unterstützter Typ wird für einen Parameter eines Delegate angegeben, der mit dem Attribut [Signal]
annotiert ist, wenn ein Variant-kompatibler Typ erwartet wird.
Regelbeschreibung
Jeder Signalparameter muss Variant-kompatibel sein, damit er beim Aussenden des Signals und beim Aufrufen der Callbacks gemarshalled werden kann.
class SomeType { }
// SomeType is not a valid parameter type because it doesn't derive from GodotObject,
// so it's not compatible with Variant.
public void InvalidSignalEventHandler(SomeType someType);
// System.Int32 is a valid type because it's compatible with Variant.
public void ValidSignalEventHandler(int someInt);
Werfen Sie einen Blick in die C#-Signale-Dokumentation für weitere Informationen über die Deklaration und Verwendung von Signalen.
Wie man Verstöße behebt
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie den Parametertyp so, dass er mit einer Variante kompatibel ist, oder entfernen Sie das Attribut [Signal]
aus dem Delegate. Beachten Sie, dass das Entfernen des Attributs dazu führt, dass das Signal nicht registriert wird.
Tipp
Wenn das Signal nicht mit Godot interagieren muss, sollten Sie erwägen, C#-Events direkt zu verwenden. Bei reinen C#-Events können Sie jeden C#-Typ als seine Parameter verwenden.
Wann man Warnungen unterdrücken sollte
Unterdrücken Sie nicht eine Warnung zu dieser Regel. Signal-Delegates mit Parametern, die nicht marshalled werden können, führen zu Laufzeitfehlern beim Aussenden des Signals oder beim Aufrufen der Callbacks.