유니티 씬(Scenes) yaml 파일은 계층 구조가 아닌가요?

1 답변

0 투표

Unity의 씬 파일이나 프리팹 파일은 YAML 형식으로 저장되지만, 일반적인 YAML 파일처럼 계층 구조로 표현되지 않습니다. Unity의 YAML 파일은 엔티티-컴포넌트 시스템을 기반으로, 각 오브젝트와 컴포넌트가 독립적으로 나열되는 방식으로 구조화되어 있습니다. 따라서, 계층 구조라기보다는 ID 기반의 참조 구조로 구성되어 있습니다.

Unity 씬 YAML 파일의 구조

Unity의 씬 파일은 특정 오브젝트와 해당 오브젝트에 부착된 컴포넌트들이 ID를 통해 서로 연결되는 방식으로 작성됩니다. 각 오브젝트와 컴포넌트는 고유한 ID를 가지며, 다른 오브젝트나 컴포넌트를 참조할 때 이 ID를 사용합니다. 이러한 구조로 인해, Unity의 YAML 파일은 비선형적이며, 계층 구조를 단순히 들여쓰기로 파악하기 어렵습니다.

구조 이해 및 예시

다음은 Unity 씬 파일에서 흔히 볼 수 있는 YAML 구조의 예시입니다:

--- !u!1 &100000
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: "Player"
  m_TagString: "Player"
  m_Layer: 0
  m_Components:
    - component: {fileID: 400000}
    - component: {fileID: 400001}
    - component: {fileID: 400002}

--- !u!4 &400000
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_GameObject: {fileID: 100000}
  m_LocalPosition: {x: 0, y: 1, z: 0}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalScale: {x: 1, y: 1, z: 1}

주요 포인트

  1. 고유 ID 시스템:

    • 각 오브젝트와 컴포넌트는 고유한 ID(&100000, &400000 등)를 가집니다. 오브젝트와 컴포넌트는 이 ID를 통해 서로 연결되며, 컴포넌트가 어느 오브젝트에 부착되어 있는지 알 수 있습니다.
  2. 계층 구조 대신 참조 시스템:

    • 오브젝트 간의 부모-자식 관계나 계층 구조는 Transform 컴포넌트 내의 참조를 통해 정의됩니다. 예를 들어, 부모 오브젝트의 Transform 컴포넌트가 자식 오브젝트의 Transform을 참조하는 식으로 계층 관계를 나타냅니다.
    • 그러나 YAML 파일에서 이를 직접적으로 들여쓰기로 표현하지 않고, 참조된 ID를 따라가며 구조를 파악해야 합니다.
  3. 컴포넌트 나열:

    • GameObject에는 여러 컴포넌트가 부착될 수 있으며, 각 컴포넌트는 YAML 파일 내에서 fileID를 통해 나열됩니다. 예를 들어, Transform이나 MeshRenderer와 같은 컴포넌트가 별도로 정의되어 있으며, GameObject는 이러한 컴포넌트를 참조합니다.

Unity 에디터에서 계층 구조 확인하는 방법

YAML 파일에서 직접 계층 구조를 파악하는 것이 어렵기 때문에, Unity 에디터를 사용하여 다음 방법으로 계층 구조를 시각적으로 확인할 수 있습니다:

  1. Hierarchy 창: Unity 에디터의 Hierarchy 창을 통해 씬 내의 오브젝트 계층 구조를 시각적으로 확인할 수 있습니다. 오브젝트가 어떤 부모와 자식 관계를 가지는지, 컴포넌트가 어떻게 부착되어 있는지를 파악할 수 있습니다.
  2. Inspector 창: 특정 오브젝트를 선택하면, 해당 오브젝트에 부착된 모든 컴포넌트와 그 속성을 Inspector 창에서 확인할 수 있습니다. 이를 통해 YAML 파일의 특정 항목이 Unity 에디터 내에서 어떻게 매핑되는지 파악할 수 있습니다.

요약

Unity 씬 파일의 YAML은 계층 구조가 아닌 ID 기반의 참조 시스템을 사용합니다. Unity 에디터의 Hierarchy 창Inspector 창을 통해 오브젝트 계층과 컴포넌트의 연결 관계를 시각적으로 확인하는 것이 더 효과적입니다.

add
...