Unity DOTS/Dots Custom Manual10 EntityPrefabReference 에 대해 알아보자 DOTS v1.2.1EntityPrefabReference란?Prefab을 런타임 중에 Entity 로 생성할 때 사용하는 구조체이다. DOTS에서 Prefab을 Entity로 생성하는 방법DOTS에서 Prefab을 Entity로 생성하는 방법에는 복제와 참조 두 가지 방식이 있다. 보통은 복제하는 방식을 사용하지만, 게임의 규모가 큰 게임의 경우 여러 SubScene이 존재하는 경우는 참조하는 방식을 사용한다. 왜냐하면 복제의 경우 SubScene에서 이미 Baking 된 Prefab을 다른 SubScene에서 사용하려면 또 베이킹을 해야하기 때문이다. 참조의 경우는 하나의 SubScene에서 Baking을 했다면 참조를 통해 다른 SubScene에서도 Baking없이 Entity로 생성할 수 있다... Unity DOTS/Dots Custom Manual 2024. 5. 3. UNITY DOTS - Dynamic Buffer Component 에 대해 알아보자. 관리되는 데이터가 저정된 Class 타입에서는 Job, BurtComplie, 멀티스레드 실행 등을 할 수 없다. 이러한 것들을 사용하려면 관리되지 않는 데이터만 저장한 Struct를 사용해야 한다. 즉, List 같은 것을 쓸 수가 없다는 의미인데 그래서 불편하다. 그래서 존재하는 것이 바로 Dynamic Buffer Component 이다. Dynamic Buffer Component 정의하기 // 청크에 16개의 저장 공간을 만든다 [InternalBufferCapacity(16)] public struct MyElement : IBufferElementData { public int Value; } DymicBufferComponent는 IBufferElementData를 상속받아야 한다. Att.. Unity DOTS/Dots Custom Manual 2022. 8. 2. UNITY DOTS - BLOB assets 에 대해 알아보자 BLOB assets은 무엇에 쓰는 물건일까? Blob 자산은 스트리밍에 최적화된 바이너리 데이터 조각입니다. 데이터를 Blob 자산에 기록하면 효율적으로 로드할 수 있고 Entity에 저장된 Compoent에서 참조할 수 있는 형식으로 데이터를 저장합니다. 제한 사항 Blob Asset은 구조체의 구성요소처럼 관리되는 데이터가 포함되면 안 됩니다. (List 같은 것들) 또한 런타임에서 변경되지 않는 읽기 전용 데이터만 포함되어야 합니다. BlobAsset을 생성하는 방법 BlobBuilder 만들기 BlobBuilder.ConstructRoot로 Asset 루트 만들기 데이터 채우기 BlobBuilder.CreateBlobAssetReference 로 BlobAssetReference 만들기 Blob.. Unity DOTS/Dots Custom Manual 2022. 7. 31. UNITY DOTS - IJobEntity Jobs 에 대해 알아보자 IJobEntity? 란 무엇인가? Entities.ForEach처럼 ComponentData를 반복합니다. 다만, IJobEntity는 여러 시스템에서 호출해서 사용할 수 있다는 점입니다. 아래는 IJobEntity의 심플한 샘플입니다. // IJobEntity public partial struct ASampleJob : IJobEntity { // 모든 translation Component에 1를 추가합니다 void Execute(ref Translation translation) { translation.Value += 1f; } } public partial class ASample : SystemBase { protected override void OnUpdate() { // Job 예약 .. Unity DOTS/Dots Custom Manual 2022. 7. 31. UNITY DOTS - Entity Command Buffers 에 대해 알아보자. 무엇에 쓰는 물건일까? 멀티스레드 환경에서는 쓰기 경쟁 문제가 발생할 수 있습니다. 여럿 스레드에서 동시에 하나의 데이터에 쓰기 작업을 하려고 하면 발생하는 문제입니다. 그래서 기본적으로 Unity DOTS(또는 ECS)에서는 여럿 안전장치를 만들어 그러한 경쟁 문제가 발생하지 않도록 조치를 취했습니다. 예로 Entities.ForEach 에서는 쓰기로 명시된 데이터에만 쓰기가 가능하다던가 하는 안전장치가 존재합니다. 그래서 멀티스레드 환경에서도 원활하게 쓰기 작업을 할 수 있도록 만든 것이 Entity Command Buffer 입니다. Entity Command Buffer는 쓰기 작업(+구조변경)이 기록되고 해당 프레임이 완료되면 Entity Command Buffer에 기록된 작업들이 처리되어 경.. Unity DOTS/Dots Custom Manual 2022. 7. 30. UNITY DOTS - EntityQuery에 대해 알아보자 Entity는 Component를 담는 것이자 식별ID를 가지고 있는 녀석이다. 그럼, Query란 무엇일까? 사전적의미는 문의, 의문이다. Query란 특정한 데이터를 보여달라는 요청을 말한다. 즉, 유니티 DOTS에서 EntityQuery란 특정 Component 타입을 가진 Entity리스트를 달라는 의미가 된다. 데이터를 읽거나, 쓰려면 어떤 타입을 가진 Entity를 조회할 것인지 알아야 한다. 이때, 사용하는 것이 바로 EntityQuery라는 것이다. EntityQuery 정의하기 가장 간단하게 EntitiyQuery를 정의하는 방법을 알아보자. RotationQuaternion과 RotationSpeed를 지닌 Entity를 찾는 EntityQuery를 정의해보겠다. EntityQuery .. Unity DOTS/Dots Custom Manual 2022. 7. 27. UNITY DOTS - IJobEntityBatch 에 대해 알아보자 IJobEntityBatch에서 I는 인터페이스를 뜻하는 것일테고 Job은 특정한 단일 작업을 수행하는 작은 단위라는 것이고 Entity는 그릇이고 그럼 Batch는 무엇일까? 사전 의미로는 일괄적으로 처리되는 집단[무리] 동사로는 (일괄처리를 위해) 함께 묶다 Chunk는 여러 Batch가 존재하게 되는데 IJobEntityBatch는 Batch를 활용해서 데이터를 처리한다. IJobEntityBatch 구조체 살펴보기 IJobEntityBatch를 상속받아서 구조체를 정의한다. public struct UpdateTranslationFromVelocityJob : IJobEntityBatch { public ComponentTypeHandle velocityTypeHandle; public Compo.. Unity DOTS/Dots Custom Manual 2022. 7. 27. 이전 1 2 다음 💲 추천 글