Version: 5.3
텍스트 기반 씬 파일
YAML 씬 파일 예제

포맷에 대한 설명

Unity의 씬 포맷은 YAML 데이터 직렬화 언어로 구현되어 있습니다. 여기서는 YAML에 대해 자세히 다루지는 않지만, 이는 공개 포맷으로서 YAML 웹 사이트에서 누구나 사양을 확인할 수 있습니다. 씬 내 각 오브젝트는 씬 파일 안에 YAML document 형태로 각각 저장됩니다(이는 해당 파일에 — 시퀀스로 시작하는 형태로 저장됩니다). 위의 문장에서 “오브젝트”는 게임 오브젝트, 컴포넌트, 또는 다른 씬 데이터를 포괄하는 개념입니다. 이들은 각각 씬 파일 내에서 각자의 YAML document를 필요로 합니다. 직렬화된 오브젝트의 기본적인 구조는 다음 예제를 통해 이해할 수 있습니다.

--- !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!” 부분 이후 나타나는 첫 번째 숫자는 오브젝트의 클래스를 나타내며, 이 경우에는 게임 오브젝트입니다. 앰퍼샌드 기호(&) 다음에 나타나는 숫자는 파일에서 고유한 오브젝트 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}

이것은 위의 YAML 문서에서 정의된 게임 오브젝트에 연결된 Transform 컴포넌트입니다. 다음 행에서 연결이 표시됩니다.

 m_GameObject: {fileID: 6}

이는 파일에 있는 게임 오브젝트의 오브젝트 ID가 6이기 때문입니다.

Floating point numbers can be represented in a decimal representation or as a hexadecimal number in IEE 754 format (denoted by a 0x prefix). The IEE 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

텍스트 기반 씬 파일
YAML 씬 파일 예제