Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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 [Signal] entfernt wird

Standardmäßig aktiviert

Ja

Ursache

Ein nicht unterstützter Typ wird für einen Parameter eines Delegates 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 <https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/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.