Páginas

sábado, 11 de outubro de 2014

Aula 5 BroadCast e Chat

BROADCAST OU CHAT MÍNIMO
Vimos o uso da RPC para um Cliente mandar uma mensagem para o Servidor. Vamos ver agora como o jogador mandaria uma mensagem para todos os outros jogadores. È assim que se cria um Chat. O nosso é minimo, quase sem nenhum recurso.
Uma coisa que é importante saber é que não precisamos colocar todo o código que fica no Cliente num único script.
Vamos então criar uma nova "scene" para um novo Cliente, com o GO "Administracao" onde vamos colocar aqueles scripts da lição anterior: o que tem as cópias de RPCs do Servidor e o scriptLogin . Lembre-se que esse script tem uma variável chamada "nome" e outra chamada "logado", que vamos acessar num novo script, que podemos chamar de Broadcast e que também fica no GO "Administracao":
var Tf1:String;
var Tf2:String;
var log : Login;
 
function OnGUI (){
if (Network.peerType != NetworkPeerType.Disconnected && log.logado == 1){
 Tf1 = GUI.TextField (Rect(10, 70, 200, 20), Tf1);
 if (GUI.Button (Rect (10,95,100,20), "Chat")) {
   networkView.RPC("BroadcastCL", RPCMode.Others,(log.nome + ": " +Tf1));
 }
 Tf2 = GUI.TextField(Rect (10, 120, 200, 20), Tf2);
 }
}
@RPC
function BroadcastCL(recebido : String){
 Tf2 = recebido;
}
Repare que aqui, a linha
networkView.RPC("BroadcastCL", RPCMode.Others,(log.nome + ": " +Tf1));
chama uma RPC que está aqui mesmo nesse script. O "mode" desse RPC é "Others", o que significa que serão chamados os clones desse script em todos os clones dessa "scene" (os jogos nas máquinas dos outros jogadores).
O terceiro parâmetro apresenta a variável log.nome sendo "log", o prefixo (objeto-referência) da Classe Login, que é aquele outro script. Como já vimos , é assim que um script acessa uma variável definida em outro script. Lembre-se que temos que arrastar, graficamente, o GO que tem o script com a variável para o Inspector:




Veja que o conteúdo desse script é disparado
if (Network.peerType != NetworkPeerType.Disconnected && log.logado == 1)
o que significa: só quando o Cliente está conectado e logado.
Temos que criar uma nova "scene" com um Servidor para esse "jogo", que vai ter os mesmos dois scripts do servidor da aula anterior, mas, no script com as cópias dos RPCs do Cliente temos que acrescentar a RPC: BroadcastCL.
Na demo, dispare o Servidor e dois Clientes. Coloque algo na linha superior de Chat e aperte a tecla. A mensagem deve ir para o outro Cliente. Na "vida real", vai para todos os outros jogadores logados.
NOTA:Na realidade, a demo aqui não é perfeita pois o Servidor não está startado quando a página é carregada. Se o Servidor estiver startado (caso "normal"), quando o Cliente é carregado, ele se conecta sem precisar se apertar nenhum botão e já aparece a janela com o Login. Demo testada no IE com plugin já instalado.

Nenhum comentário:

Postar um comentário

Pesquisar