Red de conocimiento informático - Material del sitio web - Cómo hacer una barra de progreso en unity3d

Cómo hacer una barra de progreso en unity3d

1. Cree dos escenas a voluntad y asígneles el nombre testScene1 y testScene2 respectivamente. Configure los botones "cambiar de escena" en las dos escenas para facilitar el cambio entre escenas de Leon. todo "loadScene" crea una escena loadScene para procesar la barra de progreso de carga.

2. Importe el paquete de recursos NGUI, seleccione NGUI-Open-Prefab Toolbar en la barra de menú de Unity3D, en la ventana de la barra de herramientas Prefab, seleccione Control - Barra de progreso coloreada y arrástrelo al panel Jerarquía, cambie el nombre a "Cargando".

3. En el panel Jerarquía, agregue el subobjeto Etiqueta a Cargando. El contenido del contexto de la Etiqueta se está "cargando" y ajuste el tamaño de fuente adecuadamente. Cree el script LoadingScripts y agregue el componente LoadingScripts a la cámara de UI Root.

4. El código del script LoadingScripts es como se muestra en la figura.

objProcessBar.GetComponentlt;UISlidergt;().value = acOp.progress;

La velocidad de carga asincrónica de la escena testScene2 determina directamente la velocidad de progreso real de la barra de progreso.

5. Cargando la escena, loadScene pasó rápidamente y saltó rápidamente a la escena testScene2. Es completamente imposible ver el progreso de la barra de progreso. El código anterior es simple y práctico, y es muy adecuado para situaciones que requieren mucho tiempo, como cargar escenas grandes y grandes recursos.

6. Para mostrar la barra de progreso al cargar pequeños recursos/escenas, utilice el código que se muestra a continuación. Otro atributo importante de AsyncOperation, AsyncOperation.allowSceneActivation acOp.allowSceneActivation = false; acOp.allowSceneActivation = true;

Cuando acOp.allowSceneActivation = false, incluso si la escena se ha cargado, no saltará automáticamente hasta acOp. enableSceneActivation = true;

7. Experimente con el efecto. Observe cuidadosamente la barra de progreso 1, 2, 3 a 100 y ejecútela exactamente de acuerdo con la configuración del código. En este momento, la velocidad de progreso de la barra de progreso no tiene nada que ver con la velocidad de carga asincrónica de la escena.

8. La razón por la que podemos obtener resultados satisfactorios y el progreso de cada porcentaje se puede mostrar ante nuestros ojos es porque hay otra declaración importante en este script. rendimiento return new WaitForEndOfFrame();

9. Mueva la declaración fuera de las llaves de la declaración del bucle while, ejecute Unity3D nuevamente y observe el efecto. Encontrará que loadScene vuelve a parpadear. Esto se debe a que el bucle while aquí solo procesa un juicio sobre si i es menor que 100, una i y una declaración de asignación. La velocidad de ejecución de la computadora es muy rápida, a veces tan rápida que el ojo humano no puede reconocerla.