Unity DOTS35 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.physics - CastRay 레이케스트 1. 개요 UNITY DOTS는 unity.physics로 물리를 구현한다. unity.physics에서 Ray를 사용하는 방법에 대해 알아보자. 이해를 돕기 위해 테스트 환경을 만드는 과정까지 세세히 설명했다. RayCast 코드를 보고 싶으신 분은 3. RayCast 구현으로 넘어가면 된다. 2. 환경 만들기 2-1 서브 씬 만들기 Hirarchy뷰에 마우스 우클릭 -> New Sub Scene를 눌러 Entity를 생성할 SubScene을 만든다. 2-2 테스트할 게임오브젝트 제작 2-2-1 Cube 생성하기 위에서 만든 Sub Scene에 Cube 두개를 생성하고 Transform.Position.z 값을 적당히 설정하여 떨어트린다. 정면의 대상을 탐색할 예정이다. 2-2-2 Physics Sha.. Unity DOTS/Unity.Physics 2022. 12. 4. UNITY DOTS TIP - ComponentData를 세분화 해라 세분화된 EntityQuery를 작성하기 위해 1. 설명 Entity의 ComponentData에 바로 엑세스하는 것은 임의 접근이므로 비효율적으로 처리된다. 그래서 EntityQuery를 통해 구성 요소를 처리해야 한다. Query로 조회하는 ComponentData가 세분화되고 작을수록 CPU가 캐시를 훨씬 더 효율적으로 사용할 수 있다. CPU의 캐시 라인이 64비트에 불과하므로 필요한 ComponentData만 조회하도록 Data를 세분화 하는 것이 좋다. 캐시란? 데이터를 미리 복사해 놓는 임시 장소를 가리킨다. 2. 예제 코드 public struct Character : IComponentData { public int Healty; public int Power; public bool Is.. Unity DOTS/TIP 2022. 12. 1. UNITY DOTS - JobHandle.CombineDependencies 1. 코드 설명 두 개의 종속성을 하나로 합칠 때 사용하는 코드이다. // 반환 타입은 JobHandle JobHandle.CombineDependencies(JobHandle, JobHandle); 2. 필요 이유 Job은 필요에 따라 비동기로 진행되어야 하고 어느 시점에서 앞의 Job들이 완료되면 실행되게끔 처리해야 할 때가 있다. 이때, JobHandle.CombineDependencies 로 앞의 Job들의 종속성을 합쳐서 동기 시점을 맞출 수 있다. 3. 예제 코드 아래의 코드는 Job을 Schedule할 때 앞의 Job의 종속성을 매개변수로 전달하여 동기 방식으로 코드가 실행된다. A가 끝나면 B가 실행되고 // B가 끝나면 C가 실행된다. var jobHandleA = new JobA(){ .. Unity DOTS/TIP 2022. 11. 29. UNITY DOTS - Unity.Mathematics.Random 랜덤 사용하기 1. 개요 DOTS에서는 Random 값을 얻을려면 Unity.Mathematics 패키지에 있는 Random을 사용해야 한다. 하지만, 기존의 UnityEngine.Random 처럼 사용하면 모든 Entity가 같은 랜덤 값을 생성하는 문제가 발생한다. 해결 방법으로는 Entity가 개별 Seed를 가지고 있으면 된다. 2. 예제 2-1 ComponentData public struct RandomScoreData : IComponentData { // Entity는 고유한 Ramdom Component를 가져야 한다. public Random Randomizer; } 2-2 Authoring public class RandomScoreAuthoring : MonoBehaviour { public fl.. Unity DOTS/TIP 2022. 11. 28. UNITY DOTS - 거리 계산하기 Unity DOTS 에서 수학 패키지로 using Unity.Mathematics를 사용해야 한다. using Unity.Mathematics에서 제공하는 오브젝트 간의 거리를 계산하는 함수에는 math.distance와 math.distancesq 2개가 존재한다. 1. math.distance 정확한 거리를 계산할 때 사용한다. 두 점간의 제곱 거리에 루트를 한 값이라 컴퓨터 성능에 악영향을 끼친다. 컴퓨터는 나누셈 연산에 잼병이다. math.distance(AEntity의 위치, BEntity의 위치); 2. math.distancesq 정확한 거리를 측정할 때는 좋지 않지만 루트 연산을 하지 않으므로 성능에 좋다. 위 Distance의 거리 계산에서 루트 계산을 하지 않은 두 점 사이의 제곱 거리.. Unity DOTS/TIP 2022. 11. 25. Unity DOTS(ECS) 에서 Build 하는 방법 Dots(ECS)는 기존의 Build로는 안되고 유니티에서 제공하는 com.unity.platforms 패키지를 사용해야 한다. com.unity.platforms도 프리뷰이다. 그럼, com.unity.platforms로 Unity Dots(ECS) 프로젝트를 빌드하는 방법에 대해 알아보자. Package 설치 Package Manager에서 + 버튼 클릭 Add package by name... 을 클릭하고 com.unity.platforms 입력한다. Build Configuration 만들기 1. Base Build Configuration Project - Assets 폴더에 우클릭 > Create > Build Configuration > Empty Build Configuarion 을 클릭한.. Unity DOTS/TIP 2022. 8. 9. 이전 1 2 3 4 5 다음 💲 추천 글