Вы находитесь на странице: 1из 4

Quando pensamos em criar um novo objeto dinamicamente por meio

do Unity, a funo Instantiate a primeira na qual pensamos. No entanto,


para um jogo multiplayer que faz uso do Unity Networking, atravs da API
de Alto Nvel, instanciar um novo objeto significa que ele deve ser criado em
todos os clientes conectados ao servidor e que este objeto estar sob a
gerencia do sistema de spawn. Uma vez administrado por este sistema,
atualizaes sobre o estado do objeto so enviadas aos clientes quando
houver alteraes deste no servidor.
Essencialmente isso significa que tudo gerido em alto nvel, sem a
necessidade de codificao. Porm, para que tudo isto acontea alguns
passos precisam ser observados. Primeiramente, o objeto precisa de um
NetworkIdentity, que o responsvel por sincronizar variveis em rede, o
transform e estado de movimentao no servidor e no (s) cliente (s). Desta
maneira, os objetos sempre estaro atualizados quando forem criados.

Em segundo lugar, o objeto pr-fabricado precisa ser adicionado


lista de objetos do gerente de rede, tambm responsvel pelo sistema de
spawn. Como alternativa a este segundo passo, h a funo
ClienteScene.RegisterPrefab responsvel por atribuir um identificador nico
ao prefab, visto que por meio deste valor que o cliente capaz de gerar o
objeto.

Neste exemplo, o usurio iria arrastar um prefab para o alienPrefab


para que quando um objeto fosse gerado no servidor, o mesmo fosse criado
nos clientes. O registro do objeto garante que ele esteja pronto quando
houve a requisio.
O terceiro passo o da codificao em si, pois nele que utilizamos
a funo NetworkServer.Spawn, como demonstrado abaixo:

neste momento que a mgica acontece. Este exemplo, gera um


nmero randmico de folhas em uma rvore. Ele est associado a um
prefab com NetworkIdentity e est registrado como um Spawnable Prefab,
conforme ilustrao:

H ainda uma ltima observao: quando falamos sobre


NetworkIdentity e no buscamos criar dinamicamente um objeto que
controlado por um jogador ou de serventia exclusiva para o servidor, como
folhas de uma rvore ou os projetis das armas dos jogadores no preciso
selecionar nenhuma opo disponvel no NetworkIdentity e so elas: Server
Only, indicado para objetos especficos do servidor e Local Player Authority,
indicado para objetos controlados clientes.
Esta somente uma frao daquilo que se pode aprender para jogos
multiplayer atravs da HLAPI e do Unity Networking, abaixo alguns links que
serviram para esse texto e que podem ser teis para pesquisas futuras:
https://docs.unity3d.com/Manual/UNetOverview.html
https://docs.unity3d.com/Manual/UNetSpawning.html
https://docs.unity3d.com/Manual/UNetConcepts.html

https://blogs.unity3d.com/2014/05/12/announcing-unet-new-unitymultiplayer-technology/
https://www.reddit.com/r/Unity3D/comments/3baszd/unet_networkserverspa
wn_not_sending_rotation_info/

Вам также может понравиться