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.

GD0202: O parâmetro da assinatura do delegate do sinal não é suportado

ID da Regra

GD0202

Categoria

Uso

A correção altera a compatibilidade (breaking) ou não altera (non-breaking)

Altera a compatibilidade (breaking) - Se o tipo do parâmetro for alterado

Não altera a compatibilidade (non-breaking) - Se o atributo [Signal] for removido

Ativado por padrão

Sim

Causa

Um tipo não suportado foi especificado para um parâmetro de um delegate anotado com o atributo [Signal] quando um tipo compatível com Variant era esperado.

Descrição da regra

Todo parâmetro de sinal deve ser compatível com Variant para que possa passar pelo marshalling ao emitir o sinal e invocar os 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);

Dê uma olhada na documentação de sinais em C# para mais informações sobre como declarar e usar sinais.

Como corrigir violações

Para corrigir uma violação desta regra, altere o tipo do parâmetro para ser compatível com Variant ou remova o atributo [Signal] do delegate. Note que remover o atributo significará que o sinal não será registrado.

Dica

Se o sinal não precisar interagir com o Godot, considere usar eventos C# diretamente. Eventos C# puros permitem que você use qualquer tipo C# em seus parâmetros.

Quando suprimir avisos

Não suprima um aviso desta regra. Delegates de sinal com parâmetros que não podem passar por marshalling resultarão em erros em tempo de execução ao emitir o sinal ou invocar os callbacks.