본문 바로가기
반응형

ecs11

[Unity][DOTS] Unity.Mathematics 라이브러리 사용하기 DOTS의 성능 향상 효과를 최대한 끌어내기 위해서는 JobSystem + Brust 컴파일러 조합을 사용해야 한다. 그런데 이 조합 하에서는 UnityEngine.Vector3 같은 Vector 타입이나 기존 수학 API를 사용할 수 없다. Unity.Mathematics라는 새로운 수학 라이브러리를 사용해야 한다. 유니티에서 제공하는 모든 ECS 데모 프로젝트에서 이 라이브러리를 사용 중이라고 한다. 유니티 에디터의 패키지 매니저(Package Manager)에서 Mathematics를 설치(Install)하면 해당 라이브러리를 사용할 수 있다. 라이브러리를 설치한 뒤, 아래와 같이 C# using 지시문을 사용해서 라이브러리가 제공하는 타입이나 함수를 사용하면 된다. using static Unit.. 2020. 1. 28.
[Unity][DOTS] System에서 Entity 데이터에 접근하는 다양한 방법 ECS System이 데이터 즉, Component에 접근하는 다양한 방법을 정리해봤다. 여기서 System은 범용적인 의미의 시스템이 아니라 ECS의 3대 구성요소 Entity, Component, System의 그 System이다. 아래 유니티 매뉴얼 페이지를 많이 참고했다. https://docs.unity3d.com/Packages/com.unity.entities@0.0/manual/entity_iteration_job.html Using IJobForEach | Package Manager UI website Using IJobForEach You can define an IJobForEach Job in a JobComponentSystem to read and write component .. 2019. 10. 24.
[Unity][DOTS] ECS System에서 기존(Non-ECS) Component 제어하기 기존 방식으로 만든 파티클 오브젝트가 ECS로 만든 Entity를 따라다니도록 구현할 이슈가 생겼다. 당연한 이야기지만 ECS에서 'S'에 해당하는 System은 'C'에 해당하는 Component를 제어한다. 변환 API를 사용하면 기존(이하 Non-ECS) Component가 ECS Component로 자동 변환된다. 하지만 아직 변환을 지원하는 Component의 종류가 많지 않다. 직접 변환 기능을 만들면 좋겠지만 쉬운 일이 아니다. 그런데 Non-ECS Component를 ECS System에서 처리하게 만드는 방법이 있다. ECS Entity 생성 시 Non-ECS Component를 추가하고 ECS System에서 이를 불러들이는 것이다. 다만 이렇게 하면 ECS의 성능 향상 효과를 제대로 .. 2019. 9. 17.
[Unity][DOTS] 계층 구조의 GameObject를 ECS Entity로 변환하기 ECS 프레임웍은 기존 개발 방식의 GameObject를 ECS Entity로 변환해 주는 API를 제공한다. GameObjectConversionUtility 클래스의 ConvertGameObjectHierarchy()라는 이름의 메서드다. 자세한 스펙은 아래 문서에서 확인할 수 있다. https://docs.unity3d.com/Packages/com.unity.entities@0.0/api/Unity.Entities.GameObjectConversionUtility.html Class GameObjectConversionUtility | Package Manager UI website Class GameObjectConversionUtility Inheritance System.Object Game.. 2019. 8. 23.
[Unity][DOTS] World와 ComponentSystemGroup 기본적으로 System은 클래스 코드만 작성하면 ECS가 알아서 인스턴스를 생성하고, World에 추가하고, 매 프레임에 업데이트까지 시켜준다. 그런데 프로젝트 진행 중 System을 앱 실행 시점이 아닌 특정 시점에 생성 및 업데이트시켜야 하는 상황이 생겼다. 즉, 앞에서 언급한 프로세스를 수동으로 해야 한다는 뜻이다. 자료를 찾다 보니 Unity 홈페이지 매뉴얼보다 잘 쓴 블로그 포스트(https://gametorrahod.com/world-system-groups-update-order-and-the-player-loop/)를 발견했다. 포스트 앞부분에 내가 원하는 내용이 모두 들어있어서 그대로 번역해봤다. ECS를 이미 사용해봤다면 "default world"라는 말을 들어본 적이 있을 것이다. .. 2019. 7. 12.
반응형