Tengo un objeto que uso solo en una escena, así que no quiero hacerlo prefabricado. Este objeto tiene identidad de red y una secuencia de comandos que aumenta un entero syncvar en el método de actualización. Cuando el juego comienza, este objeto se deshabilitó porque el servidor no se está ejecutando. Cuando empiezo a alojar el servidor, este objeto se habilitó. Todo está bien en este punto, pero cuando un cliente se une, este objeto aún está deshabilitado en el cliente y no sincronizado.
Si tengo razón es porque los objetos no están conectados entre sí. ¿Cómo y lo resuelvo sin hacer de este objeto un prefabricado y simplemente generarlo?
¿Cómo puedo generar objetos sin un reproductor prefabricado con autoridad en el servidor (sería un objeto de servicio único)?
Las identidades de red deben generarse. Si ya está en su escena, puede hacer que se genere usando
NetworkServer.SpawnObjects();También puede generar cualquier prefabricado que haya definido en NetworkManager. Busque la matriz de prefabricados que se pueden generar registrados. Para generar un prefabricado registrado, puede usar
NetworkServer.Spawn();Por ejemplo, genere una casa prefabricada registrada en el servidor usando un comando:
[Command] public void CmdSpawnGameObject() { var spawnObject = Instantiate(prefab, Vector3.zero, Quaternion.identity); NetworkServer.Spawn(spawnObject, connectionToClient); }¿Cómo puedo generar objetos sin un reproductor prefabricado con autoridad en el servidor (sería un objeto de servicio único)?
no puedes Tienes que tener un playerPrefab engendrado y tienes que tener autoridad. Pero también puede entregar la autoridad usando
identity.AssignClientAuthority(conn);