기본적인 흐름은 이해했는데


아직 제대로 배운지 1주도 안됐고 독학이긴 하지만
이건 진짜 ㅈ같다는 소리가 절로나오네. 


지금 문제는 엔티티를 서브씬에 있는 프리팹을

SystemAPI.QueryBuilder()

             .WithAll<UnitTag, Prefab>()

             .Build()

             .GetSingletonEntity();
이런식으로 가져오고 

  public partial struct SpawnUnitJob : IJobEntity

    {

        public EntityCommandBuffer.ParallelWriter ecb;

        public Entity prefab;


        public void Execute(RefRO<UnitSpawnRequest> spawnRequest, Entity requestEntity, [ChunkIndexInQuery] int sortKey)

        {

            Entity newEntity = ecb.Ins1tantiate(sortKey, prefab);


            ecb.SetComponent(sortKey, newEntity, spawnRequest.ValueRO.LocalTransform);

            ecb.SetComponent(sortKey, newEntity, spawnRequest.ValueRO.MoveComponent);


            ecb.DestroyEntity(sortKey, requestEntity);

        }

    }


대충 이런식으로 SpawnRequest라는 엔티티가 동적으로 생성되면 시스템에서는 그 엔티티를 가져와 
프리팹을 동적생성시키고 생성요청 엔티티는 삭제
이런식으로 생성하는 코드를 만들긴 했음,

근데 이렇게 해야하는게 맞는건가? 잘 모르겠다는 생각이 드는 것 자체가 첫번째 문제고

 프리팹 엔티티를 Ins1tantiate하면 삭제시킬땐 어떻게해야하나 물어보니 DestroyEntity를 해도 되긴 하나
풀링을 권장하더라?

그래서 지피티랑 제미나이에 물어보면

1. 쿼리를 캐싱하고 NativeA1rray를 가져와 써야한다
2. 막상 돌려보니 .ToEntityA1rray(Allocator.TempJob)<-이게 메모리 누수 발생시킴.
3. 정작 A1rray를 가져와도 병렬처리면 동시성 접근문제가 있어 어느 인덱스에 있는걸 가져와 써야하는지 모름
4. NativeQueue로 해야한다 -> 병렬처리에 못씀

지금은 또 Disabled 컴포넌트와, IEnableableComponent라는게 있다는걸 알긴 했는데
이걸로 뭘 어떻게 해야하는지도 모르겠고

인공지능한테 물어봐도 지들도 헷갈려서 헛소리 하는데 (특히 최신버전 문서 기준으로 얘기하라고 해도 자꾸 구버전 기준으로 코드를 쳐 내놓음)
뭔가 많이 만들어져는 있지만 이걸 사람들이 쓰도록 할 생각이 있긴 한건가? 싶다.
쓰는법이 너무 좆같아서 한 10년차 개발자가 와도 쉽지않을듯