Version: 2017.3
Archivos de escena basados en texto
Un ejemplo de un archivo de Escena YAML

Descripción del formato

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

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í:-

--- !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}

… debido a que el ID del objeto del GameObject dentro del archivo era 6.

Floating point numbers can be represented in a decimal representation or as a hexadecimal number in IEEE 754 format (denoted by a 0x prefix). The IEEE 754 representation is used for lossless encoding of values, and is used by Unity when writing floating point values which don’t have a short decimal representation. When Unity writes numbers in hexadecimal, it will always also write the decimal format in parentheses for debugging purposes, but only the hex is actually parsed when loading the file. If you wish to edit such values manually, simply remove the hex and enter only a decimal number. Here are some valid representations of floating point values (all representing the number one):

myValue: 0x3F800000
myValue: 1
myValue: 1.000
myValue: 0x3f800000(1)
myValue: 0.1e1

Archivos de escena basados en texto
Un ejemplo de un archivo de Escena YAML