Hace poco he empezado a hacer algunas pruebas con Unity para hacer algún juego en Android. Mi experiencia está siendo muy positiva, porque hace largo tiempo trabajé con Div Game Studio y Phoenix, y me divertía muchísimo… y esto ha sido un reencuentro con el mundo del indiegame genial.

Sin embargo, encuentro que aún hay muchas cosas que le faltan a Unity y que no se porqué no están ahí… una de las más sencillas es la posibilidad de hacer transiciones para pasar de una escena a otra, con un simple Fade In o Fade Out desde negro.

Para completar mi prueba con Unity decidí hacer un sencillo Prefab y compartirlo con vosotros, por si a alguien le resulta de utilidad, lo podéis descargar pinchando AQUÍ.

Y podeis verlo en marcha en el juego MazeMaster Skully aquí:

https://play.google.com/store/apps/details?id=com.devergence.mazemaster

MazeMaster Skully free Android Game

Instalación (Importación)

Basta con ir en Unity al menú Assets / Import Package / Custom Package y elegir el fichero UnitySceneFade.unitypackage que habeis descargado para poder completar la instalación en vuestro proyecto.

Uso

Una vez importado el proyecto, podéis arrastrar el Prefab llamado SceneFade a vuestra jerarquía de objetos en la escena en que deseeis usarlo.

Si seleccionáis el nuevo objeto que habéis añadido a vuestra escena podréis ver lo siguiente en el inspector:

Inspector Scene Fade Unity

La descripción de los atributos es la siguiente:

  • FadeOutExture : textura que se mostrara al hacer el fadeOut, por defecto es negro.
  • PlayOnAwake: se va a ejecutar en cuanto se cargue la escena.
  • StartFadingIn: cuando PlayOnAwake está seleccionado, este check indica si hará fadeIn al empezar, o si por el contrario hará FadeOut.
  • FadeInDuration y FadeOutDuration: tiempo en segundos que dura la transición.

Os invito a hacer pruebas con la configuración que más os guste.

Si quereis reproducir la transición desde código, por ejemplo al pulsar un botón, basta con obtener la referencia del objeto instanciado SceneFade y ejecutar el método oportuno. Por ejemplo, para hacer FadeOut al pulsar el boton podeis hacer algo así:

function OnMouseDown(){
  GameObject.Find("SceneFade").GetComponent(sceneFade).FadeOut();
  }

Si abrís el fichero sceneFade.js podeis encontrar más métodos útiles o modificarlos a vuestro antojo.

Un saludo!

Y ahora unos tags en inglés para facilitar la busqueda a los usuarios extranjeros:

Free Unity 3D Prefab for scene FadeIn and FadeOut transitions

If you are looking for a free and simple (easy to use) Unity 3D Prefab for Fade In and Fade Out transition between scenes, you can try this:

  1. Download prefab package from HERE.
  2. Import UnitySceneFade.unitypackage in your project from Unity menu: Assets / Import Package / Custom Package
  3. Drag SceneFade prefab to your scene Hierarchy panel.
  4. Configure SceneFade object in Inspector for your own customization.
  • FadeOutExture : fade out texture
  • PlayOnAwake: Play when scene starts
  • StartFadingIn: if PlayOnAwake is selected, play FadeIn (if selected) or FadeOut at start
  • FadeInDuration and FadeOutDuration: duration (seconds) for transition
  1. Or play transitions from codebehind by doing:
function OnMouseDown(){
  GameObject.Find("SceneFade").GetComponent(sceneFade).FadeOut();
  }

Read sceneFade.js for more methods.

Enjoy!