Quero dizer, se durante o tempo de execução houver uma nova ligação para um determinado inputAction
, como:
inputAction.performed += ctx => Function(ctx.ReadValue<float>());
E suponha que antes desta nova ligação o jogador já estava segurando esta entrada para 1f
, e continua após ser vinculado. Essa nova ligação de entrada não sabe nada sobre esse valor retido, porque nenhuma alteração foi feita na entrada e, portanto, nenhum retorno de chamada foi chamado.
Isso, no entanto, é problemático. Eu gostaria que as entradas mantidas anteriormente executassem retornos de chamada, mesmo que nenhuma alteração tenha sido feita.
Por enquanto, a entrada é consumida até que uma alteração seja feita.
Existe uma maneira de configurar isso? Ou a única alternativa seria codificá-lo manualmente?
Você não pode simplesmente alterar a maneira como os eventos funcionam em c#. .
Eu acho que você pode fazer isso como, por exemplo
Como alternativa - já em termos de arquitetura/conceito - por que anexar apenas o ouvinte dinamicamente?
Você pode ter uma classe wrapper que sempre anexa o ouvinte já inserido,
Awake
para que esteja sempre atualizado.Em seguida, sua classe dinâmica pode anexar um ouvinte a esse "wäre intermediário" sempre atualizado. Basicamente, adicionar uma camada de abstração no topo do InputSystem que permite fazer ambos, anexar ouvintes, mas também pesquisar o estado atual sem a necessidade de eventos (embora, na verdade, como mencionado acima, acho que o InputSystem já fornece isso)