Command line arguments
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 Unity toma es asignar un ID único al asset. Este ID es utilizado internamente por Unity para referirse al asset lo cual significa que el asset puede ser movido o re-nombrado sin que se rompan las referencias al asset.

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

Usted va a notar que en la imagen de arriba hay archivos .meta listados en el sistema de archivos para cada asset y carpeta creada dentro de la carpeta Assets. Estos no son visibles en la ventana Project de Unity. Unity crea estos archivos para cada asset, pero estos están ocultos por defecto, por lo que usted no podrá verlos en el Explorer/Finder tampoco. Usted puede hacerlos visible al seleccionar esta opción en Unity Edit > Project Settings > Editor > Versions Control, Mode : Visible Meta Files.

El ID que Unity asigna a cada asset es almacenado dentro del archivo .meta que Unity crea en conjunto con el archivo asset en sí mismo. Este archivo .meta debe mantenerse con el archivo asset al cual se relaciona.

IMPORTANTE: Los archivos .meta deben coincidir y mantenerse con sus archivos asset respectivos. Si usted mueve o re-nombra un asset dentro de la ventana Project de Unity, Unity va de manera automática a mover o re-nombrar el archivo .meta correspondiente. Si usted muevo o re-nombra un asset afuera* de Unity (i.e. en Windows Explorer, o Finder en Mac), usted debe mover o re-nombrar el archivo .meta para que coincidan.

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 un asset script que pierde su archivo .meta, cualquier Game Objects o Prefabs que tenía ese script asignado terminaría con un componente “unassaigned script”, y perdería su funcionalidad. Usted tendría que manualmente re-asignar el script a estos objetos para arreglar 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

Al igual que el ID único asignado al asset, los archivos meta contienen valores para todos los import settings (ajustes de importación) que usted ve en el inspector cuando usted tiene un asset seleccionado en la su ventana project. Para una textura, esto incluye ajustes como el Texture Type, Wrap Mode Filter Mode y 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.*

Command line arguments
AssetDatabase