Outdated documentation

This documentation page refers to Godot 4.3, and may be outdated or incorrect.
Additionally, this engine version is no longer supported.

Check this page in the stable branch for the latest additions and corrections.

GD0202: The parameter of the delegate signature of the signal is not supported

Rule ID

GD0202

Category

Usage

Fix is breaking or non-breaking

Breaking - If the parameter type is changed

Non-breaking - If the [Signal] attribute is removed

Enabled by default

Yes

Cause

An unsupported type is specified for a parameter of a delegate annotated with the [Signal] attribute when a Variant-compatible type is expected.

Rule description

Every signal parameter must be Variant-compatible so it can be marshalled when emitting the signal and invoking the callbacks.

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);

Take a look at the C# signals documentation for more information about how to declare and use signals.

How to fix violations

To fix a violation of this rule, change the parameter type to be Variant-compatible or remove the [Signal] attribute from the delegate. Note that removing the attribute will mean the signal is not registered.

Tip

If the signal doesn't need to interact with Godot, consider using C# events directly. Pure C# events allow you to use any C# type for its parameters.

When to suppress warnings

Do not suppress a warning from this rule. Signal delegates with parameters that can't be marshalled will result in runtime errors when emitting the signal or invoking the callbacks.


User-contributed notes

Please read the User-contributed notes policy before submitting a comment.