본문 바로가기

개발/Unity22

[Unity DOTS] 공식 샘플 프로젝트 완전 분석 1편 나도 깜짝 놀랐는데 'ECS & C# Job System 샘플 프로젝트 따라잡기 #2'라는 이름의 포스트를 작성하고 벌써 1년이 넘게 지났다. 슬슬 3편을 써볼까 하고 git pull을 받았는데 너무 많이 바뀌었다. 그래서 그냥 처음부터 다시 시작한다. 기존 1,2편도 기록을 위해 남겨둔다. 2019/03/13 - [개발/Unity] - [Unity][DOTS] ECS & C# Job System, 샘플 프로젝트 따라잡기 #1 [Unity][DOTS] ECS & C# Job System, 샘플 프로젝트 따라잡기 #1 유니티의 Entity Component System & C# Job System 샘플 프로젝트를 파헤쳐보겠다. Entity Component System(이하 ECS)과 C# Job Syst.. 2020. 5. 20.
[Unity] 콘솔 창 Error Pause 옵션 유니티 에디터에서 런타임에 데이터 로딩 중 다음 단계로 넘어가지 않는 현상이 발생했다. git pull 받고 난 후에 발생했기에 다른 팀원들도 마찬가지인지 물었는데 나에게만 나타나는 현상이었다. 변경된 파일들을 싹 revert 해야겠다고 생각했다. 그래도 안 되면 아예 clone을 다시 받는 것까지 각오했다. 마지막으로 혹시나 하는 마음에 에디터를 한번 더 들여다봤다. 읔.. Error Puase가 활성화돼 있었다. 나는 누른 기억이 없는데 아마도 고양이가 눌렀나 보다. 유니티 콘솔 창에는 여러 가지 옵션이 있는데 Error Puase는 말 그대로 런타임에 에러가 발생하면 에디터를 Pause(일시정지)시키는 옵션이다. 유니티 매뉴얼 페이지에 자세히 설명돼있다. https://docs.unity3d.com.. 2020. 3. 23.
[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] NGUI + Spine 연동 진행 중인 프로젝트의 UI를 NGUI 기반으로 만들고 있다. 그런데 기존 UI에 Spine 오브젝트를 추가할 일이 생겼다. NGUI Panel 사이에 Spine 오브젝트를 끼워 넣는 식으로 작업했다. 작업 중 몇 가지 이슈가 생겨서 이를 해결한 방법을 정리했다. 먼저 기존 UI와 Spine 오브젝트 간 렌더링 우선 순위(depth)를 정하는 작업을 한다. 따로 구현할 필요는 없고 각각 아래의 값을 사용하면 된다. NGUI 오브젝트는 UI Panel 컴포넌트의 Sort Order 값을 사용한다. Spine 오브젝트는 아래 그림과 같이 Skeleton Animation 컴포넌트의 Order in Layer 값을 사용한다. Background는 UI Panel 오브젝트로 Sort Order를 1로 설정한다. .. 2019. 8. 30.
반응형