unity tutorial online network espaƱol c# unity3d multiplayer unity-networking unity3d-unet

c# - tutorial - Carga de escenas adicionales en Unity Networking-UNet



unity online (1)

¿Alguna vez resolviste esto?

Supongo que tendrá que esperar a que todos los clientes estén ''Listo'' (carga de escena terminada) antes de llamar a SpawnObjects.

Descripción breve: Estoy cargando una escena aditiva en mi escena principal , se está cargando bien pero GameObject de la escena Additive (que contiene el componente de identidad de red ) se está deshabilitando .

Detalles: estoy cargando una escena aditiva a través de este código para que una escena aditiva se cargue en mi servidor y todos los clientes funcionen bien:

[ClientRpc] public void RpcLoadLevelAcrossNetwork() { SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); }

Aunque ha cargado mi escena en clientes / servidor, pero el objeto que está con la identidad de la red está deshabilitado (es el comportamiento predeterminado como he comprobado UnitySetSceneObjects que establece que:

Todos los objetos en la escena con un componente NetworkIdentity se desactivarán cuando se cargue la escena; tanto en el cliente como en el servidor. Luego, cuando la escena está completamente cargada, se llama a NetworkServer.SpawnObjects () para activar estos objetos de escena en red. Esto lo hará automáticamente NetworkManager cuando la escena del servidor termine de cargarse , o puede ser invocada directamente por el código del usuario.

Como la documentación indica que activará automáticamente los objetos de identidad de red, pero no ocurrió en mi contexto. La carga de mi escena está bien, pero sus objetos de identidad de red no están activos.

¿Que estoy haciendo mal?

También traté de activar el objeto a través de llamar a NetworkServer.SpawnObjects () en mi nueva escena cargada, pero solo generando el objeto en el servidor mientras mostraba el error en el cliente.

Objeto escena spawn no encontrado para 1 Objeto escena spawn no encontrado para 2 Objeto escena spawn no encontrado para 3 ...... . .

¿Puede algún campeón de Unet ayudarme?

MODIFICAR / ACTUALIZAR Enfoque:

He cambiado mi código de acuerdo con la discusión del foro de unidad para la carga de escena aditiva, está cargando mi escena aditiva en el servidor con error (dado a continuación) y aún los objetos de identidad de red de escena de mi lado del cliente están deshabilitados:

Error:

Listo () llamado con objeto de conexión no válido: conn = null

Otro código Prueba:

#region AdditiveSceneLoadingSetup [Command]//calling this for additive scene load- its start public void CmdLoadAdditiveSceneMainCall() { RpcLoadAdditiveScene(); StartCoroutine(LoadAdditiveSceneAtServer()); } [ClientRpc] public void RpcLoadAdditiveScene() { Debug.Log("RpcLoadAdditiveScene"); StartCoroutine(LoadAdditiveSceneAtClient()); } public IEnumerator LoadAdditiveSceneAtClient() { Debug.Log("LoadAdditiveSceneAtClient"); yield return SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); List<NetworkConnection> networkConnectionList = FindObjectOfType<MyNetworkManagerWithVR>().networkConnectionList; for (int i = 0; i < networkConnectionList.Count; i++) { ClientScene.Ready(networkConnectionList[i]); } //ClientScene.Ready(this.connectionToServer);//connectionToServer } public IEnumerator LoadAdditiveSceneAtServer() { Debug.Log("LoadAdditiveSceneAtServer"); NetworkServer.SetAllClientsNotReady(); yield return SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); NetworkServer.SpawnObjects(); } #endregion AdditiveSceneLoadingSetup