Unity 6.3
0 онлайн 106 гостей 3 в системе
Вход
Сцены Шаг 43 из 48

Формат текстовых серийных файлов

Формат сцен Unity использует специальное подмножество языка сериализации данных YAML. YAML — открытый формат; его документация доступна на сайте YAML. Дополнительные сведения о YAML, используемом в Unity, см. в документации по UnityYAML.

Файл записывает каждый Объект в Scene в качестве отдельного документа YAML. Последовательность --- вводит каждый Объект в файл. В этом контексте термин “Объект” относится к GameObjects, Компонентам и другим данным сцены в совокупности: каждый из этих элементов нуждается в собственном документе 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). Число после амперсанда — идентификатор объекта, уникальный в пределах файла, хотя каждому объекту он присваивается произвольно. Каждое сериализуемое свойство объекта записывается строкой такого вида:

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 документ выше. {fileID:6} используется для представления GameObject как GameObjectЦель ID в файле было 6.

m_GameObject: {fileID: 6}

Для представления числа с плавающей запятой можно использовать десятичное представление или шестнадцатеричные числа в формате IEEE 754 (обозначаемом префиксом 0x). Unity использует представление IEEE 754 для кодирования значений без потерь и для записи значений с плавающей запятой, которые не имеют короткого десятичного представления. Когда Unity пишет числа в шестнадцатеричной системе, он всегда записывает десятичный формат в скобках для целей отладки, но только шестнадцатеричная система фактически анализируется при загрузке файла. Чтобы редактировать эти значения вручную, удалите шестнадцатикратную и введите десятичное число. Следующий пример показывает правильное представление значений с плавающей запятой (все представляют число один):

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