일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- job
- unity
- Unity Editor
- Framework
- TextMeshPro
- 프레임워크
- 텍스트 메시 프로
- 커스텀 패키지
- adfit
- 암호화
- RSA
- ui
- 이미지 폰트
- Custom Package
- 최적화
- Tween
- 단말기 해상도
- base64
- AES
- C#
- Dynamic Font
- DotsTween
- sha
- 다이나믹 폰트
- Dots
- jumping ball
- Job 시스템
- 가이드
- 2D Camera
- 샘플
- Today
- Total
EveryDay.DevUp
[Unity] DOTS - ECS ( Entity, Component, System ) 본문
ECS를 알아보기 전 DOTS에 대해 궁금한 점이 있다면 하단의 링크를 통해 알아 볼 수 있다.
https://everyday-devup.tistory.com/67
● ECS 란?
: ECS는 Entitiy, Component, System의 앞글자를 하나씩 딴 단어로, Unity에서 DOTS를 사용하기 위해 만든 아키텍쳐라고 할 수 있다.
▶ World
: Systems, Entities, Archetypes를 묶은 것으로 Unity에서는 기본적으로 Default World를 제공한다.
: 사용자가 추가로 World를 생성할 수도 있으며, World간에 참조도 가능하지만 World간의 의존성이 발생하기 때문에 권장하지 않는다.
▶ Archetype
: 공통 된 Component를 묶은 데이터, 예를 들어 Position, Rotation, Renderer 데이터를 사용하는 경우 Archetype ( Position, Rotation, Renderer )에서 데이터를 관리하고, Position, Rotation데이터를 사용하는 경우 Archetype ( Position, Rotation )에서 데이터를 관리한다.
: 데이터는 16KB Chunk 단위로 링크드 리스트로 처리된다. 이는 데이터의 삭제와 추가를 빠르게 수행하기 위함인데, 하나의 큰 배열로 처리할 경우 데이터의 삭제와 추가가 발생할 때마다 큰 배열을 정리해야하는 오버헤드가 발생하기 때문이다.
: 링크드 리스트로 관리하면 기존에 사용하던 Chunk가 가득찬 경우 새로운 Chunk를 생성하여 링크로 연결해 주면 되고, 삭제가 필요한 경우 메모리를 해제하고 링크 연결을 끊어 주기만 하면 되기 때문에 속도가 빠르다.
: 공통된 Component 중에서 특정한 Component가 사라지는 경우, 예를 들어 Position, Rotation, Renderer 가 있었는데 이중에 Renderer가 삭제되는 경우 Archetype ( Position, Rotation, Renderer )에서 Archetype ( Position, Rotation ) 으로 변경된 데이터 값이 복사되고 Archetype ( Position, Rotation, Renderer )에서의 변경된 데이터는 삭제 된다. 이 때 오버헤드가 발생하기 때문에 유의해야한다.
▶ Entity
: Component 데이터 한 묶음을 가리키는 인덱스이다.
▶ Component
: 읽고 쓰기 위한 실제 데이터이다.
▶ System
: Entitiy와 Component 조회해서 로직을 수행한다.
참고 자료 : https://www.youtube.com/watch?v=hAp5nx2_Hpg
'Unity' 카테고리의 다른 글
[Unity] DOTS - Burst Compiler (0) | 2020.06.04 |
---|---|
[Unity] DOTS - 프로세스, 스레드, C# Job 시스템 (0) | 2020.06.03 |
[Unity] DOTS ( Data Oriented Technology Stack ) (0) | 2020.06.02 |
[Unity] Gamma ( 감마 보정, 감마 색 공간 ) vs Linear ( 선형 색 공간 ) (0) | 2020.05.26 |
[Unity] Editor Ui 스케일링 (0) | 2020.05.25 |