GD0202: Параметр сигнатуры делегата сигнала не поддерживается
Идентификатор правила |
GD0202 |
Категория |
Использование |
Исправление может быть как ломающим, так и не ломающим |
Критическое изменение - если тип параметра изменен Неразрывный — если атрибут |
Включено по умолчанию |
Да |
Причина
Для параметра делегата, аннотированного атрибутом [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# для их параметров.
Когда следует подавлять предупреждения
Не подавляйте предупреждение из этого правила. Делегаты сигналов с параметрами, которые невозможно маршаллировать, приведут к ошибкам выполнения при передаче сигнала или вызове обратных вызовов.