GD0202: Параметр сигнатуры делегата сигнала не поддерживается

Идентификатор правила

GD0202

Категория

Использование

Исправление может быть как ломающим, так и не ломающим

Критическое изменение - если тип параметра изменен

Неразрывный — если атрибут [Signal] удален

Включено по умолчанию

Да

Причина

Для параметра делегата, аннотированного атрибутом [Signal], указан неподдерживаемый тип, тогда как ожидается совместимый с Variant тип.

Описание правила

Каждый параметр сигнала должен быть Cовместим-с-Variant, чтобы его можно было упорядочить при передаче сигнала и вызове обратных вызовов.

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

Дополнительную информацию о том, как объявлять и использовать сигналы, можно найти в документации C# signals.

Как устранить нарушения

Чтобы исправить нарушение этого правила, измените тип параметра на совместимый с Variant или удалите атрибут [Signal] из делегата. Обратите внимание, что удаление атрибута приведёт к тому, что сигнал не будет зарегистрирован.

Совет

Если сигнал не нуждается во взаимодействии с Godot, рассмотрите возможность использования непосредственно событий C#. Чистые события C# позволяют использовать любой тип C# для их параметров.

Когда следует подавлять предупреждения

Не подавляйте предупреждение из этого правила. Делегаты сигналов с параметрами, которые невозможно маршаллировать, приведут к ошибкам выполнения при передаче сигнала или вызове обратных вызовов.