| | |—| | Note: UNet is deprecated, and will be removed from Unity in the future. A new system is under development. For more information and next steps see this blog post and the FAQ.| El sistema HLAPI multijugador de Unity maneja al jugador GameObjects de manera diferente a los GameObjects que no son jugadores. Cuando un nuevo jugador se une al juego (cuando un nuevo cliente se conecta al servidor), el GameObject de ese jugador se convierte en un GameObject “jugador local” en el cliente de ese jugador, y Unity asocia la conexión del jugador con el GameObject del jugador. Unity asocia un jugador GameObject para cada persona que juega el juego, y enruta comandos de red a ese GameObject individual. Un jugador no puede invocar un comando en el GameObject de otro jugador, solo el suyo.
La clase NetworkBehaviour (de la que deriva para crear sus scripts de red) tiene una propiedad llamada isLocalPlayer. En el GameObject de cada cliente, Unity establece esa propiedad en true en el script NetworkBehaviour e invoca el callback OnStartLocalPlayer(). Esto significa que cada cliente tiene un GameObject diferente configurado así, porque en cada cliente un GameObject diferente es el que representa al jugador local. El siguiente diagrama muestra dos clientes y sus jugadores locales.
Solo el jugador GameObject que es “suyo” (desde su punto de vista como jugador) tiene establecido el indicador isLocalPlayer
** **. Por lo general, debe establecer este indicador en el script para determinar si procesar la entrada, si hacer que la cámara rastree GameObject, o hacer cualquier otra cosa del lado del cliente que solo debería ocurrir para el reproductor que pertenece a ese cliente.
El jugador GameObjects representa al jugador (es decir, la persona que juega el juego) en el servidor, y tiene la capacidad de ejecutar comandos desde el cliente del jugador. Estos comandos son seguros de cliente a servidor llamadas de procedimiento remoto. En este sistema autoritativo del servidor, otros GameObjects del lado del servidor que no son jugadores no pueden recibir comandos directamente desde GameObjects del lado del cliente. Esto es tanto para la seguridad como para reducir la complejidad de la construcción de tu juego. Al enrutar todos los comandos entrantes de los usuarios a través del GameObject del jugador, puede asegurarse de que estos mensajes procedan del lugar correcto, del cliente correcto y se puedan gestionar en una ubicación central.
El Network Manager agrega un reproductor cada vez que un cliente se conecta al servidor. Sin embargo, en algunas situaciones, es posible que no desee agregar reproductores hasta que ocurra un evento de entrada, como cuando un usuario presiona un botón de “inicio” en el controlador. Para desactivar la creación automática del reproductor, navegue hasta el Inspector del componente Network Manager y desmarque la casilla de verificación Auto Create Player .