This document is about: QUANTUM 2
SWITCH TO

엔티티 프로토타입

소개

Quantum 2.0은 데이터 기반 설계를 용이하게 하기 위해 엔티티 프로토타입을 도입했습니다.

엔티티 프로토타입은 다음을 포함하는 엔터티의 시리얼라이즈된 버전입니다.

  • 구성(즉, 어떤 컴포넌트로 구성되었는지) 그리고,
  • 데이터(즉, 컴포넌트의 속성 및 초기 값)입니다.

따라서 데이터와 동작을 완벽하게 분리할 수 있으며, 설계자는 프로그래머가 지속적으로 편집할 필요 없이 전자를 조정할 수 있습니다.

프로토타입 설정

엔티티 프로토타입은 유니티 편집기에서 설정할 수 있습니다.

기본

To create an 엔티티 프로토타입을 생성하기 위해서는 간단히 GameObject에 엔티티 프로토타입 스크립트를 추가하면 됩니다.

entity prototype script on an empty gameobjet
기본 엔티티 프로토타입 (빈 게임오브젝트 + 엔티티 프로토타입 스크립트).

The 엔티티 프로토타입 스크립트를 사용하면 2D 및 3D 모두에 가장 일반적으로 사용되는 컴포넌트에 대한 파라미터를 설정하고 정의할 수 있습니다.

  • 트랜스폼 (2D용 Transform2DVertical 포함)
  • PhysicsCollider
  • PhysicsBody
  • NavMeshPathFinder
  • NavMeshSteeringAgent
  • NavMeshAvoidanceAgent

물리 및 NavMesh 관련 에이전트에 대한 의존성이 존중됩니다. 자세한 내용은 해당 문서를 참조하십시오.

사용자 지정 컴포넌트

추가적인 컴포넌트는 다음을 통해 엔티티 프로토타입에 추가될 수 있습니다:

  • 엔티티 컴포넌트 추가 드롭 다운을 통하거나
  • 오른쪽 엔티티 컴포넌트에서 검색하여 일반적인 유니티 컴포넌트 추가 버튼을 통해.

컬렉션에 대한 노트

컴포넌트의 동적 컬렉션은 항목이 하나 이상 있는 경우에만 자동으로 할당됩니다. 그렇지 않으면 컬렉션을 수동으로 할당해야 합니다. 이 주제에 대한 자세한 내용은 DSL 페이지의 동적 컬렉션 항목을 참조하십시오.

계층

ECS에는 엔티티/GameObject 계층 구조의 개념이 없습니다. 이러한 엔티티 프로토타입은 계층 구조나 중첩을 지원하지 않습니다.

하위 프로토타입이 직접 지원되지는 않지만 다음을 수행할 수 있습니다.

  1. 씬에서 별도의 프로토타입을 만들어 베이킹합니다.
  2. 컴포넌트에 참조를 유지하여 연결합니다.
  3. "자식"의 위치를 수동으로 업데이트합니다.

노트: 씬에서 베이킹 되지 않은 프로토타입은 엔티티가 생성되어 코드로 연결되는 다른 워크플로우를 따라야 합니다.

객체(뷰)에는 계층 구조를 가질 수 있지만 엔티티의 계층 구조(시뮬레이션)는 사용자가 처리해야 합니다.

프로토타입 생성/인스턴스화 하기

엔티티 프로토타입이 유니티에서 정의되면 시뮬레이션에 포함시킬 수 있는 다양한 방법이 있습니다.

씬/맵에서 베이킹하기

엔티티 프로토타입이 유니티 씬의 일부로 생성된 경우 해당 맵 에셋에 베이킹 됩니다. 베이킹 된 엔티티 프로토타입은 맵이 완성되고 베이킹 값으로 초기화될 때 로드됩니다.

주의: 씬의 엔티티 프로토타입이 편집되거나 값이 변경된 경우 맵 데이터를 다시 만들어야 합니다.

코드에서

엔티티 프로토타입에서 새 엔티티를 작성하려면 다음 단계를 따라야 합니다:

  1. EntityProtype 스크립트를 포함하는 GameObject의 유니티 프리팹을 만듭니다.
  2. 프리팹을 Resources\DB에 놓습니다.
entity prototype asset
엔티티 프로토타입 프리팹 + 중첩된 엔티티 프로토타입 에셋.
=> 이렇게 하면 중첩된 *엔티티 프로토타입* **에셋**이 생성됩니다.
  1. Quantum -> Generate Asset Resources에서 Quantum 데이터베이스를 새로고침 합니다 .
  2. 시뮬레이션이 가능하도록 엔티티 프로토타입 에셋 경로 또는 GUID를 만들어줍니다.
entity prototype asset guid & path
엔티티 프로토타입 에셋 윈도우
=> 경로 또는 GUID를 복사하려면 해당하는 `편집` 버튼을 클릭하세요.
  1. 프레임을 통해 Create()를 호출하고 엔티티 프로토타입 에셋의 경로 또는 GUID를 전달합니다.

C#

void CreateExampleEntity(Frame f){
    var exampleEntity = f.Create("Resources/DB/Prefabs/Example|EntityPrototype");
}

노트

씬의 엔티티 프로토타입맵 에셋으로 베이킹 되는 반면, 프리팹 엔티티 프로토타입은 Quantum 에셋 데이터베이스의 일부인 개별 엔티티 에셋입니다.

엔티티 뷰

엔티티 뷰는 유니티에 있는 컴포넌트의 시각적 표현에 해당합니다. 데이터 기반 설계의 정신으로, 엔티티 프로토타입 컴포넌트를 통합하거나 별도의 EntityView 에셋을 가리킬 수 있습니다.

Self

엔티티 프로토타입의 뷰를 자신으로 설정하기 위해서, 간단히 엔티티 뷰 컴포넌트를 추가하면 됩니다.

entity prototype with entity view
"Self" 뷰가 있는 엔티티 프로토타입.

컴포넌트가 추가되면 엔티티 프로토타입 스크립트에 매개변수의 값으로 Self가 나열됩니다. 또한 동일한 프리팹에 중첩된 엔티티 뷰 에셋이 생성됩니다.

entity prototype asset and
엔티티 프로토타입 에셋과 "Self" 뷰 에셋.

Prototype으로 부터 분리

엔티티 프로토타입 에셋과 별도의 뷰를 설정하고 링크하려면 다음과 같이 하십시오:

  1. 뷰를 나타낼 GameObject에 엔티티 뷰를 추가합니다.
  2. 엔티티 뷰가 포함된 GameObject를 프리팹합니다.
  3. 프리팹을 Resources\DB 놓습니다. 프리팹에 엔티티 뷰 에셋이 중첩됩니다.
entity prototype with entity view
엔티티 프로토타입 에셋과 분리된 엔티티 뷰 에셋.
  1. Quantum -> Generate Asset Resources을 통해 데이터베이스를 새로고침 합니다.
  2. 엔티티 프로토타입 필드를 새로 만든 엔티티 뷰 에셋과 연결합니다. 드래그 앤 드롭 또는 유니티 컨텍스트 검색 메뉴를 통해 수행할 수 있습니다.
linking an entity prototype with a separate entity view asset
분리된 엔티티 뷰 에셋으로 엔티티 프로토타입 연결하기.

중요

엔티티 뷰를 유니티에서 나타내려면 EntityViewUpdater 스크립트가 있어야 합니다.

Back to top