본문 바로가기

Unity/DOTS

DOTS 학습을 위한 기초 정리 #5 일반 구성 요소

반응형

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. 인스턴스 데이터(변수)는 참조형이 될 수 없다.

 

반응형