Asynchronous Shader compilation
AssetDatabase

Detras de Escenas

Unity importa assets automáticamente y gestiona varios tipos de datos adicionales acerca de estos para usted, como qué tipo de import settings (ajustes de importación) deberían ser utilizados para importar un asset, y dónde el asset es utilizado a través del proyecto. A continuación se describe como funciona este proceso.

Qué sucede cuando Unity importa un Asset?

1. Un ID único es asignado

Cuando usted coloca un Asset como una textura en la carpeta Assets, Unity va a primero detectar ese nuevo archivo que fue agregado (el editor frecuentemente revisa los contenidos de la carpeta Assets contra la lista de assets que ya conoce).

El primer paso que toma Unity es asignar una identificación única al activo. Esta identificación la usa internamente Unity para referirse al asset, lo que significa que el asset se puede mover o cambiar de nombre sin referencias al rompimiento del activo.

2. Un archivo .meta es creado

La relación entre la carpeta Asset en su proyecto de Unity en su computador, y la Ventana Project dentro de Unity
La relación entre la carpeta Asset en su proyecto de Unity en su computador, y la Ventana Project dentro de Unity

You’ll notice in the image above that there are .meta files listed in the file system for each asset and folder created within the Assets folder. These are not visible in Unity’s Project Window. Unity creates these files for each Asset, but they are hidden by default, so you may not see them in your Explorer/Finder either. You can make them visible by selecting the Mode setting to Visible Meta Files on the Editor window (main menu: Edit > Project Settings, then select the Editor category, and navigate to the Version Control section).

The ID that Unity assigns to each Asset is stored inside the .meta file which Unity creates alongside the asset file itself. This .meta file must stay with the asset file it relates to.

Important: .meta files must match and stay with their respective Asset files. If you move or rename an asset within Unity’s own Project window, Unity will also automatically move or rename the corresponding .meta file. If you move or rename an asset outside* of Unity (i.e. in Windows Explorer, or Finder on the Mac), you must move or rename the .meta file to match.

Si un asset pierde su archivo meta (por ejemplo, si usted muevo o re-nombre el asset afuera de Unity, sin mover/re-nombrar el archivo .meta correspondiente), cualquier referencia al asset será rota. Unity generaría un nuevo archivo .meta para el asset movido/re-nombrado como si fuera un nuevo asset, y borraría el archivo .meta viejo “huérfano”.

Por ejemplo, en el caso de un asset de textura que pierde su archivo .meta, cualquier Material que sea utilizado por esa textura ahora no tendrá referencia a esa textura. Para arreglar esto, usted tendría que manualmente re-asignar esa textura a cualquier material que lo requiera.

En el caso de que un asset de script pierda su archivo .meta, cualquier Game Objects o Prefab que tenga ese script asignado terminaría con un componente de “script no asignado” y perdería su funcionalidad. Tendría que volver a asignar manualmente el script a estos objetos para solucionar esto.

3. El asset fuente es procesado

Unity lee y procesa cualquier archivo que usted ha agregado a la carpeta Assets, convirtiendo el contenido del archivo en versiones listas para jugar de los datos. Los archivos actuales asset se mantienen sin modificar, y las versiones procesadas y convertidas de los datos son almacenadas en la carpeta del proyecto Library.

Utilizar un formato interno para los assets le permite a Unity tener versiones listas para jugar de sus assets para que utilice en tiempo de ejecución en el editor, mientras que mantiene los archivos fuente sin modificar en la carpeta assets para que usted pueda editarlos de manera rápida. Por ejemplo, el formato de archivos de Photoshop es conveniente para trabajar y se puede guardar directamente en su carpeta Assets, pero hardware como los dispositivos móviles y tarjetas gráficas de PC no pueden aceptar ese formato directamente para renderizar como texturas. Todos los datos para la representación interna de assets en Unity se almacena en la carpeta Library que puede ser pensada similarmente a una carpeta de caché. Como usuario, usted nunca debería alterar manualmente la carpeta Library ya que intentar hacerlo puede dañar la funcionalidad de su proyecto en el editor de Unity. No obstante, siempre es bueno borrar la carpeta Library (mientras el proyecto no está abierto en Unity) ya que toda su información es generada de lo que está almacenado en la carpeta Assets y ProjectSettings. Esto también significa que la carpeta Library no debería estar incluida en el control de versiones.

A veces hay múltiplos assets creados desde una importación.

Algunos archivos asset pueden resultar en múltiples assets siendo creados. Esto puede ocurrir en las siguientes situaciones:

  • Un archivo 3D, como un FBX, define Materiales y/o contiene Texturas embebidas. En este caso, los materiales definidos y texturas embebidas son extraídas y representadas en Unity como assets separados.

  • Un archivo de imagen es importado como múltiples sprites. Es posible definir múltiples sprites desde una sola imagen gráfica, al utilizar el Sprite Editor (Editor de Sprites) de Unity. En este caso, cada sprite definido en el editor aparecerá como un Sprite asset por separado en la ventana Project.

  • Un archivo 3D contiene múltiples lineas de tiempo de animación, o tiene clips definidos por separado dentro de sus ajustes de importación de animación. En esta situación, los múltiples clips de animación aparecerían como asset Animation Clip por separados en la ventana Project.

Los ajustes de importación pueden alterar el procesamiento del asset

As well as the unique ID assigned to the asset, the meta files contain values for all the import settings you see in the inspector when you have an asset selected in your project window. For a texture, this includes settings such as the Texture Type, Wrap Mode, Filter Mode and Aniso Level.

Si usted cambia los ajustes de importación para un asset, estos ajustes cambiados son almacenados en el archivo .meta que acompaña el asset. El asset será re-importado de acuerdo a sus nuevos ajustes, y los datos correspondientes “listos para el juego” importados serán actualizados en la carpeta Library del proyecto.

Cuando se encuentre realizando una copia de seguridad de un proyecto, usted debe incluir la carpeta principal del proyecto de Unity, conteniendo ambas las carpetas Assets y ProjectSettings. Toda la información en estas carpetas es crucial para la forma en que Unity trabaja. Usted puede ignorar las carpetas Library y Temp para el propósito de hacer copias de seguridad.

Tenga en cuenta: Los proyectos creados en Unity 4.2 o antes pueden no tener archivos .meta si no están explícitamente activados. Borrar la carpeta Library en estos proyectos va a llevar a una perdida de información y una corrupción permanente del proyecto ya que ambos los formatos internos generados de sus assets y los datos meta son almacenados en la carpeta Library.*

Asynchronous Shader compilation
AssetDatabase