Noticias

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

Pantalla blanca mientras se carga el juego

Iniciado por raulprofe, Diciembre 12, 2017, 07:48:43 PM

Tema anterior - Siguiente tema
Hola. 
 
Utilizo Personal Edition.
 
Ejecutando el juego, tras la pantalla de "made with Unity", aparece una pantalla blanca que puede durar muchos segundos mientras se carga el juego. Despista un poco porque si el ordenador es lento puede durar bastante.
 
¿Se puede poner en la pantalla blanca simplemente algo del tipo "cargando...", o es necesario tener una edición profesional de Unity?
 
 

Diciembre 12, 2017, 09:01:28 PM #1 Ultima modificación: Diciembre 12, 2017, 09:02:07 PM por lightbug
Hola, se puede pero lo vas a tener que implementar vos, o por lo menos no conozco ninguna opción que realice lo que pedís de forma automática. Hacerlo es bastante sencillo, tenes que cargar la escena "pesada" de forma asíncrona, haciendo esto lo que hacés es cargar la escena en memoria pero no aparece en pantalla hasta que le des el ok mediante el "done", podés verificarlo vos o ponerle que cuando se carga pase directamente. Aca la Doc:
 
https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html
 
 
 
Osea que ahora en vez de arrancar directamente la escena pesada, arrancás la escena de carga y hacés lo de arriba (revisá el link), mientras tanto podés hacer lo que quieras en la escena de carga, seguir el progreso de carga con una barra, animar un sprite , dejar todo estático, etc

Cita de: lightbug date=1513108888Hola, se puede pero lo vas a tener que implementar vos, o por lo menos no conozco ninguna opción que realice lo que pedís de forma automática. Hacerlo es bastante sencillo, tenes que cargar la escena "pesada" de forma asíncrona, haciendo esto lo que hacés es cargar la escena en memoria pero no aparece en pantalla hasta que le des el ok mediante el "done", podés verificarlo vos o ponerle que cuando se carga pase directamente. Aca la Doc:
   
   
      https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html
   
   
       
   
   
      Osea que ahora en vez de arrancar directamente la escena pesada, arrancás la escena de carga y hacés lo de arriba (revisá el link), mientras tanto podés hacer lo que quieras en la escena de carga, seguir el progreso de carga con una barra, animar un sprite , dejar todo estático, etc
   


¡¡Gracias!! Funcionó. 
 
Puse una escena de "Cargando" con un cubo rotando. Le metí al cubo este script: 
 
 
 

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class scriptPrecargando : MonoBehaviour {
 
void Start () {
   StartCoroutine(LoadYourAsyncScene());
}
void Update(){
   //Rota un cubo al que pertenece este script para distraer mientras se carga la siguiente escena
   transform.Rotate(Vector3.up, 50 * Time.deltaTime);
}
 
IEnumerator LoadYourAsyncScene()
{
   // The Application loads the Scene in the background at the same time as the current Scene.
   //This is particularly good for creating loading screens. You could also load the Scene by build //number.
   AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("Juego1Inicial");
   //Wait until the last operation fully loads to return anything
   while (!asyncLoad.isDone)
   {
      yield return null;
   }
}
}

 
 

Etiquetas: