Version: 2017.3
Text-Based Scene Files
Пример YAML файла сцены

Описание Формата

Формат сцен Unity реализован при помощи языка сериализации данных YAML. Хотя мы не можем рассмотреть здесь все особенности YAML, это открытый формат, и его спецификации доступны бесплатно на сайте YAML. Каждый объект в сцене записан в файл как отдельный YAML документ, который представлен в файле через последовательность —. Заметьте, что в данном контексте термин “объект” обозначает GameObjects, Components и другие данные сцены в совокупности; каждый из этих объектов требует собственный YAML документ в файле сцены. Базовая структура сериализованного объекта может быть объяснена из примера:-

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

Первая строка содержит запись “!u!1 &6” после маркера документа. Первое число после “!u!” обозначает класс объекта (в данном случае, это GameObject). А число, следующее за амперсандом, это идентификационный номер объекта (ID), уникальный внутри файла, хотя и назначающийся каждому объекту произвольно. Каждое сериализуемое свойство объекта обозначается линией, такой как эта:-

 m_Name: Cube

Свойства обычно идут с префиксом “m_”, но в остальном следуют имени свойства, которое определено в справке по скриптам. Второй объект, определенный ниже в файле, может выглядеть следующим образом:-

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

Это Transform компонент, присоединенный к игровому объекту (GameObject), определенный через YAML документ выше. Присоединенная часть обозначается линией:-

 m_GameObject: {fileID: 6}

…поскольку GameObject ID в файле был 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

Text-Based Scene Files
Пример YAML файла сцены