Una breve discusión sobre la función de los metaarchivos de Unity y el análisis del contenido de texto de archivos prefabricados y de otro tipo.

Todos los archivos en Unity están en formato de texto y se puede ver el contenido.

Formato de metaarchivo: (diferentes archivos pueden tener diferentes contenidos a partir de la tercera línea)

fileFormatVersion: 2
guid: 8c37735a974bb7f4a8fa831a31dff02a
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant:

Después de importar el archivo a Unity, el metaarchivo se generará automáticamente.
El principal contenido grabado del archivo Meta es el GUID y la configuración de importación de archivos.

1.GUID:
guid: 8c37735a974bb7f4a8fa831a31dff02a es el ID único en todo el proyecto, se asigna después de la importación y no habrá duplicaciones.
Si se produce una duplicación, aparecerá una advertencia amarilla:
Método de prueba: cree un nuevo material llamado m1 y unity generará el m1.mat.meta correspondiente.
Abra la ruta donde se encuentra este archivo, seleccione m1 y su meta en la carpeta y cópielo.
Luego abra Unity y espere la importación automática. Aparecerá una advertencia amarilla: Insertar descripción de la imagen aquí
No mueva ni elimine archivos fuera del motor de Unity.
De hecho, Unity reasignará el GUID al metaarchivo incorrecto importado relativamente tarde (a veces no lo asignará, mantendrá el estado de conflicto del metaarchivo y no volverá a advertir, no sé por qué). Los problemas causados ​​por los conflictos se discutirán más adelante.

2: Importar configuración
Método de prueba: después de importar el ícono a Unity, cambie al modo Sprite. Confirmar svn. Después de modificar MaxSize 32.
Puede ver que el tamaño de cambio se ha modificado de 2048 a 32. La parte del cuadro rojo es la plataforma publicable. Se puede modificar individualmente.
Insertar descripción de la imagen aquí

La relación de conexión entre archivos en Unity:

Prueba: ahora hay un material y una imagen, y la imagen está colgada en el material:
Insertar descripción de la imagen aquí
como se muestra en la figura, hay un ícono 37 en el material m1. Insertar descripción de la imagen aquí
Después de guardar, puede ver que m1.mat ha sido modificado. Insertar descripción de la imagen aquí
Comparar las diferencias puede revelar una línea de modificación de contenido.
- _MainTex:
m_Texture: {fileID: 0}
cambiado a
- _MainTex:
m_Texture: {fileID: 2800000, guid: 336f4b4eab0aaef4a882d98f5ae39ec0, tipo: 3}

Abra el metaarchivo de icon37 y verá
Insertar descripción de la imagen aquí
el GUID: 336f4b4eab0aaef4a882d98f5ae39ec0
. Encontrará que el GUID de la imagen es el mismo que el GUID del contenido modificado en el archivo de material.
Por lo tanto, la asociación de referencia de dependencia entre archivos en Unity se realiza mediante GUID.
Si se produce un conflicto con un metaarchivo, es posible que el GUID grabado en el archivo no sea el archivo seleccionado originalmente. Se producirá la pérdida de archivos.

Prueba:
guid: 336f4b4eab0aaef4a882d98f5ae39ec1
Cambié el último dígito del GUID de la imagen de 0 a 1.
Después de ingresar a la unidad, descubrí que
Insertar descripción de la imagen aquí
la imagen del material se había perdido.
Lo mismo se aplica a varias asociaciones de archivos en Unity:
colgué un script en un GameObject y modifiqué el GUID del metaarchivo del script para
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
informar diferentes formas de error. Si aparece la palabra "faltante", básicamente hay algún problema con el GUID.

Guardar archivos de unidad

Todos los archivos en Unity son archivos de texto,
por lo que si modifico las coordenadas de un objeto, en realidad se reflejará en el contenido del archivo.
Insertar descripción de la imagen aquí
Cambié las coordenadas de una casa prefabricada de 000 a 9.87
Insertar descripción de la imagen aquí
para comparar las diferencias. Puedes ver que las coordenadas han sido modificadas. Puedes ver que el nombre del campo modificado es m_LocalPosition.
Su nodo padre es Transform, que corresponde a la posición de la Transformar componente en el panel en Unity.

Los parámetros, incluidos los scripts personalizados, se mostrarán en el panel.
Monté un script en el nodo y verifiqué las diferencias: Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
encontré 2 modificaciones.
componente: {fileID: -2879555396794527001} muestra que se agrega un nuevo GUID de referencia a este objeto, que es esta cadena de 287955…. Lo que se cita específicamente se explica en el siguiente párrafo:

Las líneas más importantes:

Línea 83 — !u!114 &-2879555396794527001
— !u!114 es el ID único en este texto
-2879555396794527001 Marque la cita anterior

Línea 84 MonoBehaviour:
Indica que esta referencia es un script personalizado. Los tipos de scripts personalizados en Unity son todos MonoBehaviour.

Línea 92 m_Script: {fileID: 11500000, guid: 5779c70bde44e2542abf571ef9a2b611, tipo: 3}
GUID está aquí. Además de garantizar la unicidad del archivo y determinar la asociación entre archivos, el GUID también marcará el directorio donde se encuentra el script
( Entonces, como se mencionó anteriormente Sí, advertencia: Consejo, no mueva ni elimine archivos fuera del motor de Unity. Si mueve la ruta del archivo dentro de Unity, Unity volverá a registrar el directorio donde se encuentra el GUID y el GUID no cambiará).

Línea 94: m_EditorClassIdentifier:
a partir de esta línea, todos son parámetros en este script personalizado. Por ejemplo, mi script expone una ranura llamada a,
Insertar descripción de la imagen aquí
luego la línea 95 en el texto también reflejará a: 0
i Realizo modificaciones en unity
Insertar descripción de la imagen aquí

Si el valor A se cambia a 567,
Insertar descripción de la imagen aquí
podrá ver que el texto también se ha modificado.

Resumen:
1. Una gran cantidad de modificaciones; para ahorrar tiempo, se puede ignorar el contenido del texto.
Sin embargo, antes de enviar pequeñas modificaciones o modificaciones de parámetros a SVN, debe comparar las diferencias entre las versiones actuales para ver si ha realizado operaciones redundantes o incorrectas. Cargar operaciones incorrectas causará varios problemas y volver a depurar llevará mucho tiempo y trabajo.
2. ¿Por qué necesita comprender el formato y el principio de guardar archivos de Unity? ¿
Cree que ha hecho 12345 cosas en el motor, pero esta operación es realmente efectiva? ¿El motor realmente lo sabe? El guardado de archivos (serialización y deserialización) es el reflejo real de la propia operación.


Las operaciones anteriores se realizan utilizando SVN+Beyond Compare.
Si no comprende la operación, puede chatear en privado, dejar un mensaje o contactarnos a través de QQ.

La programación es infinita.
Todos son bienvenidos a comunicarse. Si hay algo que no está claro o está mal, también pueden chatear conmigo en privado.
Mi QQ 334524067 Dios-como Didi

Supongo que te gusta

Origin blog.csdn.net/qq_37776196/article/details/116006274
Recomendado
Clasificación