Pular para o conteúdo principal

Sistema de Events

Última atualização: 16 de julho de 2026

No PlayServ, as interações entre cliente e servidor são baseadas em Events. Tanto o cliente quanto o servidor usam os Events do Client SDK.


Quando usar Events​

Use Events quando precisar entregar um payload tipado de um lado para o outro pelo mecanismo de Events do Client SDK:

  • defina um contrato com [Event] — identificador e payload
  • envie o Event com Send(...) ou com o açúcar sintático gerado
  • receba-o assinando com Wait<T>(...)
  • pare de recebê-lo com Stop()
informação

Os Events oferecem um contrato consistente e com tipos seguros para a troca de dados entre cliente e servidor:

  • a estrutura do payload é fixada pela definição [Event]
  • o mesmo contrato de Event fica disponível dos dois lados graças à geração automática das classes de descrição do Event
  • o açúcar sintático reduz o boilerplate ao enviar Events registrados

Definir um Event​

O Event precisa ser definido primeiro. Isso lhe dá um identificador e especifica o payload que ele carrega.

[Event]
class ChatMessage {
string text;
int priority;
}

Depois que o Event é declarado, o analisador de código usa essas declarações para gerar açúcar sintático e simplificar o trabalho com Events registrados.


Enviar um Event​

Um Event pode ser enviado na forma explícita ou pelo açúcar gerado.

PlayServ.Send(new ChatMessage { text = "hello", priority = 1 });

PlayServ.SendChatMessage({ text = "hello", priority = 1 }); // sugar
PlayServ.SendChatMessage("hello", 1); // sugar

Receber um Event​

Para receber Events do lado remoto, crie uma Subscription com Wait.

var waiting = PlayServ.Wait<ChatMessage>(data => {
chat.Write($"Message {data.text}");
});

Cancelar uma Subscription​

Para cancelar uma Subscription, use Stop.

waiting.Stop();

Contratos de Event dos dois lados​

contrato [Event]ChatMessagegerado dos dois ladosRemetenteSend(ChatMessage)DestinatárioWait<ChatMessage>(...)Event tipadoStop() cancela a Subscription

Para cada [Event] externo descoberto no código do lado do remetente, as classes de descrição do Event — por exemplo, ChatMessage — devem ser geradas automaticamente no código do lado do destinatário.

aviso

Quando cliente e servidor compartilham o mesmo codebase, o que é comum, gerar a classe de descrição do Event no lado que recebe garante que o contrato continue unificado e com tipos seguros dos dois lados.


Próximos passos​

  • RPC & Server-side Game Logic — operações nomeadas no servidor que funcionam ao lado dos Events
  • Groups — os Events de um Group usam a mesma API de Events e o mesmo padrão de açúcar sintático