Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Error al spawnear objetos en UNET

Iniciado por MatiasBoyer, Junio 21, 2016, 01:20:22 AM

Tema anterior - Siguiente tema
Hola a todos,
 
Tengo este error a spawnear objetos en unet usando NetworkServer.SpawnObjects(); , los objetos se spawnean del lado HOST pero en el CLIENTE no aparece nada, solo aparece el siguiente error:
 
Spawn scene object not found for 1
 
Alguien que sepa como solucionarlo porfavor?
 
Gracias.

El networkserver.SpawnObject hace eso, te crea el objeto en el host y si ejecutas esa línea en un cliente te tira error, para crearlo en el cliente prueba con la función NetworkServer.Spawn, llamada siempre desde el host.

networkserver.SpawnWithClientAuthority
 
le añades en el network identity la opcion de client authority.

Junio 22, 2016, 10:01:36 PM #3 Ultima modificación: Junio 23, 2016, 10:34:36 AM por pioj
@juanma_teso
 
Intenté de las 2 maneras pero me pasa lo mismo, solo que me dice esto desde EL CLIENTE:
 



   
      Spawn scene object not found for 1
      UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()
   

[/quote]
 
Y este es el código:
 

       if (SceneManager.GetActiveScene().buildIndex != )
        {
            sObj = true;
        }
        if (sObj && isServer && JUGADOR_CLIENTE != null)
        {
            NetworkServer.SpawnObjects();
            GameObject[] OBJ = GameObject.FindGameObjectsWithTag("sceneObj");
            for (int i = ; i < OBJ.Length; i++)
            {
                //NetworkServer.Spawn(OBJ);
                NetworkServer.SpawnWithClientAuthority(OBJ[i], JUGADOR_CLIENTE);
            }
            sObj = false;
        }
        if(isServer)
        {
            JUGADOR_CLIENTE = GameObject.Find("JUGADOR_Cliente");
        }

 
 

El spawn with client authority es solo cuando no es el server, es cuando es el cliente. A demás, los spawns tienes que hacerlo dentor de un comando. Esto se crea así:
 
 
 

using UnityEngine.Networking;
//importa networking y cambia de monobehavoir a NetworkBehavoir.
/////////////////////////////////
[Command]
void CmdSpawn () {
 //Aqui el codigo de spawn, si es servidor usa NetworkServer.Spawn(obj);
  //si es cliente usa NetworkServer.SpawnWithClientAuthority(Obj);
}

 
 

Voy a buscar un poco por los foros de Unity, no sé que pueda ser, todos los objetos con ese tag tienen NetworkIdentity? Si explicas un poco qué intentas lograr nos darías un poco de perspectiva :) Yo probaría primero llamando sólo el NetworkServer.Spawn() dentro del bucle y no al SpawnObjects(), comenta esa línea y nos cuentas.

Etiquetas: