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()
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
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.
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