quantum | v2 switch to V1  

엔티티 프로토타입

소개

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를 전달합니다.
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 스크립트가 있어야 합니다.

기술 문서 TOP으로 돌아가기