ComponentData
Unity의 ComponentData (acomponentin 표준 ECS 용어라고도 함)는 엔티티에 대한 인스턴스 데이터 만 포함하는 구조체입니다 . ComponentData는 메소드를 포함 할 수 없습니다. 이것을 이전 유니티 시스템의 측면에서 표현하자면, 이는 이전 컴포넌트 클래스와 비슷하지만 변수 만 포함하고 있습니다 .
Unity ECS는 IComponentData코드에서 구현할 수 있는 인터페이스를 제공합니다 .
IComponentData
전통적인 Unity 구성 요소 (포함 MonoBehaviour)는 동작을위한 데이터 및 메서드를 포함하는 객체 지향 클래스입니다. IComponentData순수한 ECS 스타일의 구성 요소입니다. 즉, 동작 만 정의하고 데이터 만 정의합니다. IComponentData클래스가 아니라 구조체입니다. 즉, 기본적으로 참조 대신 값 으로 복사 됩니다. . 일반적으로 다음 패턴을 사용하여 데이터를 수정해야합니다.
#Code
var transform = group.transform[index]; // Read
transform.heading = playerInput.move; // Modify
transform.position += deltaTime * playerInput.move * settings.playerMoveSpeed;
group.transform[index] = transform; // Write
#Code/
IComponentData 구조체는managed objects에 대한 참조를 포함 할 수 없습니다. ComponentData가비지 수집이 아닌 가비지가 아닌 수집되고 추적되는(simple non-garbage-collected tracked) 청크 메모리 이기 때문 입니다.
file : /Packages/com.unity.entities/Unity.Entities/IComponentData.cs를 참조하십시오 .
#정리
1. '일반' 컴포넌트로 '변수'만을 포함하고 있는 '구조체'다.
2. 기본적으로 구조체라서 참조 복사가 아닌 값 복사가 일어난다.
3. 인스턴스 데이터(변수)는 참조형이 될 수 없다.
'Unity > DOTS' 카테고리의 다른 글
DOTS 학습을 위한 기초 정리 #7 시스템 상태 구성요소 (2) | 2019.05.25 |
---|---|
DOTS 학습을 위한 기초 정리 #6 공유된 구성 요소(Shared Component) (0) | 2019.05.24 |
DOTS 학습을 위한 기초 정리 #4 구성 요소(Component) (0) | 2019.05.24 |
DOTS 학습을 위한 기초 정리 #3 World (0) | 2019.05.17 |