El formato de escena de Unity es implementado con el lenguaje de serialización de datos YAML. Aunque nosotros no podamos cubrir YAML en profundidad aquí, es un formato abierto y sus especificaciones están disponibles de manera gratuita en la página web de YAML. Cada objeto en la escena está escrito al archivo como un documento YAML separado, el cual es introducido en el archivo por la secuencia —. Tenga en cuenta que en este contexto, el término “object” se refiere a los GameObjects, Componentes y otros datos de la escena colectiva-mente; cada uno de estos items requiere su propio documento YAML en el archivo de escena. La estructura básica de un objeto serializado puede entenderse mejor con un ejemplo:-
--- !u!1 &6
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
importerVersion: 3
m_Component:
- 4: {fileID: 8}
- 33: {fileID: 12}
- 65: {fileID: 13}
- 23: {fileID: 11}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
La primera linea contiene el string “!u!1 &6” después del marcador del documento. El primer número después de la parte “!u!” indica la clase del objeto (en este caso, es un GameObject). El número que sigue el signo & es el número ID de un objeto que es único dentro del archivo, aunque el número esté asignado a cada objeto de manera arbitraria. Cada una de las propiedades de serialización del objeto se denota por una linea como la que sigue:-
m_Name: Cube
--- !u!4 &8
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_LocalRotation: {x: 0.000000, y: 0.000000, z: 0.000000, w: 1.000000}
m_LocalPosition: {x: -2.618721, y: 1.028581, z: 1.131627}
m_LocalScale: {x: 1.000000, y: 1.000000, z: 1.000000}
m_Children: []
m_Father: {fileID: 0}
Este es un componente Transform adjunto al GameObject definido por el documento YAML de arriba. El archivo adjunto es denotado por la linea:-
m_GameObject: {fileID: 6}
Los números punto flotantes pueden ser representados por una representación decimal o un número hexadecimal en formato IEE 754 (denotado por un prefijo 0x). La representación IEE 754 es utilizado para una codificación sin pérdidas de valores, y es utilizado en Unity cuando se escribe valores de punto flotante que no tienen una representación corta decimal. Cuando Unity escribe número de manera hexadecimal, siempre va a también escribir el formato decimal en paréntesis para propósitos de depuración, pero solamente el hex es de verdad parsed cuando se cargue el archivo. Si usted desea editar tales valores de manera manual, simplemente quite el hex e ingrese solamente un número decimal. Aquí hay algunas representaciones válidas de valores punto flotante (todos representando el número uno):
myValue: 0x3F800000
myValue: 1
myValue: 1.000
myValue: 0x3f800000(1)
myValue: 0.1e1
Las propiedades típicamente tienen el prefijo “m_” pero de otra manera sigue el nombre de la propiedad como es definido en la referencia de script. Un segundo objeto, definido en el archivo, podría verse algo así:- … debido a que el ID del objeto del GameObject dentro del archivo era 6.