- Unity DOTS - IEnableableComponent을 반복문없이 변경하기개양반오늘은 매우 짧은 팁이다.IEnableableComponent는 가장 효율적인 방법으로 Entity의 상태를 변경할 수 있는 컴포넌트이다. 다수의 Entity 상태를 변경할 때는 꼭 반복문을 써야 할까? 보통은 많이 사용될 거 같은 기능에 대해 함수로 기능을 만들어줄 때가 많다. 먼저 entityManager와 entityQuery를 변수로 만든다.var entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;var entityQuery = new EntityQueryBuilder(Allocator.Temp) .WithAll() .WithPresent() ..
- 2025-02-10 19:23:07
- Unity DOTS - 클릭한 장소로 이동하기개양반개요Unity DOTS에서 클릭한 좌표로 이동시키는 방법에 대해 알아보자. Scene 작업1. 서브씬 만들기 게임오브젝트를 Entity로 변환하려면 SubScene에서 게임오브젝트를 생성해야 한다.미리 Entity로 만들어서 런타임에서 랙걸리지 않기 위함이라고 생각하면 된다. 2. Ground 생성SubScene 의 자식으로 Plane을 만든다. Ground로 이름을 변경하고 LayerMask에 Ground를 추가해서 해당 오브젝트의 레이어를 Ground로 변경한다. 3. 캐릭터 생성SubScene의 자식오브젝트로 빈게임오브젝트를 만들고 이름을 Player로 변경한다. Rigidbody와 Capsule Collider를 추가한다.Player의 자식오브젝트로 Capsule을 추가하고 Collider를 ..
- 2025-02-09 23:27:58
- 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..
- 2022-12-04 03:09:15
- 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..
- 2022-12-01 19:16:30
- 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(){ ..
- 2022-11-29 23:03:44
- 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..
- 2022-11-28 18:57:07
- 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의 거리 계산에서 루트 계산을 하지 않은 두 점 사이의 제곱 거리..
- 2022-11-25 20:09:50
- 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 을 클릭한..
- 2022-08-09 23:49:04
- Unity DOTS(ECS)에선 꼭 Enter Play Mode Options를 활성화하자개양반Project Setting - Editor - Enter Player Mode Options 라는 옵션이 존재한다. 이 옵션을 활성화하고 유니티 재생을 누르면 매우 빠르게 로드된다. 다만, 수정한 내용을 리로드 하지 않기 때문에 수정한 내용이 적용이 안된다는 문제점을 가지고 있다. 대부분의 프로젝트는 게임 객체 기반이고 게임 객체 기반 프로젝트는 상태에 대해 수많은 정적 변수를 사용하는 경향이 있기 때문에 Unity의 빠른 진입 플레이 모드는 기본값이 아닙니다. 그리고 기본적으로 그렇게 하면 플레이 모드에 들어가기 전에 모든 정적 상태를 재설정하기 위해 도메인을 다시 로드해야 합니다. 의도적으로 DOTS에서 수행하는 모든 작업은 이 패턴을 피합니다.(리로드를 안해도 된다는 말) 다중 세계, 세계 싱글톤..
- 2022-08-09 22:53:07
- Unity DOTS(ECS)에서 따라다니는 카메라 만들기개양반Player(Entity)를 따라다니는 Camera(GameObject)을 만들려고 Camera를 ConvertToEntity로 변환시키면 카메라 랜더링이 없다는 검정화면을 보게 된다. Camera Rendering이 Entity 로 전환되면 먹통이 되어서 생기는 문제다. 즉, 카메라는 항상 GameObject로 존재해야 한다. 그러므로 MonoBehaviour 에서 Player(Entity)의 위치 정보를 읽어서 카메라가 따라다니게 만들어야 한다. MonoBehaviour 에서 Player(Entity)를 읽어오는 방법은 여러가지가 있다. 그 중 GetSingletonEntity로 읽어오는 방법에 대해 다루겠다. using Unity.Entities; using Unity.Mathematics; usi..
- 2022-08-09 16:41:30
- ECS SampleProject #8 EntityPrefab개양반Hello Cube 부분은 완료되었고 Advanced 폴더에 있는 예제를 뜯어보기로 했다. 해당 기능의 개념보다 예제 자체가 어려운건 건너뛰었다. 이번에 알아볼 내용 이번 글의 핵심은 EntityPrefabReference 라는 것이다. PrefabSpawnerSystem 에서 사용되는 것인데 Unity에서 제공하는 기능으로 Entity를 로드하고 생성하는 것에 최적화된 기능이라고 볼 수 있다. EntityPrefabReference 에 대해 ReadMe 에서는 아래와 같이 설명하는데 사실 이해는 안 간다. 더보기 이 샘플은 엔티티 프리팹을 참조하여 동적으로 로드하고 인스턴스화할 수 있도록 하는 방법을 보여줍니다. 장면에서 PrefabSpawnerAuthoring 구성 요소에는 프리팹에 대한 참조 배열이..
- 2022-08-04 16:41:39
- ECS SampleProject #7 IJobEntity개양반원래 7번은 7. IJobChunkStructBased 이지만 최근 버전에서는 IJobChunkStructBased가 IJobEntityBatch로 대체되어 건너뛰고 IJobEntity로 바로 넘어갑니다. 또한 9. ForEach_ISystem는 BurstCompile을 할 수 있는 구조체를 사용하는 예제인데 최신 버전부터 SystemBase의 OnUpdate에서도 구조체의 경우 BurstComplie을 사용할 수 있게 되었으므로, 9. ForEach_ISystem도 생략합니다. 선행 학습 [Unity DOTS/Dots Custom Manual] - UNITY DOTS - IJobEntity Jobs 에 대해 알아보자 이전 글 보기 [Unity DOTS/ECS Sample Projtect] - ECS S..
- 2022-07-31 15:58:44
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)