본문 바로가기

💻 내 소개 안녕하세요 다빈입니다다
  • 나이 : 96년생
  • 특이사항 : 집에 있는 걸 특히 좋아함
  • 좋아하는 음식 : 롯데리아, 처갓집 양념 치킨, 삼겹살

🥷기술
Unity
Godot
Cpp
Javascript
D3
Vue

🐱 우리집 고양이 소개
츄르 먹은 후 츄르 먹기 전
  • 이름 : 콜라
  • 나이 : 14년생
  • 종 : Nado moreum

📱 개인 프로젝트
🏢 참여한 프로젝트
🌱 내 잔디밭

Unity ECS R&D 메모 본문

글 묶음/내 밥줄 Unity, C#

Unity ECS R&D 메모

초긍정 개발자 다빈맨 2025. 5. 22. 23:38

| Bake에 대한 이해

 

편의상 Unity 에서 SubScene 하위의 게임 오브젝트들은 런타임 이전에 ECS 데이터로 변환이 되어 바이너리 파일로 저장이 되고, 실제 런타임에는 이 ECS 데이터를 읽어 동작한다. Baker<T>를 이용해 작성한 Bake 스크립트는 이런 변환 과정에 개입되어 작성되는 스크립트이기 때문에 런타임이 아닌 에디터 레벨에서 동작한다는걸 알아야 한다.

 

 

| 어드레서블 에셋으로 서브 씬을 관리할 때 주의할 점

 

일반적으로 빌드 설정에 Scene List에 SubScene을 보유한 씬을 등록하면 정상적으로 포함된 SubScene을 빌드에 포함할 수 있지만 Addressable을 사용한다면 Scene List에 씬이 포함되지 않기 때문에 SubScene이 빌드에 정상적으로 포함된다.

 

일반적인 경우 ECS를 구현한 씬을 만들고자 한다면 관리 용이상 씬 자체를 어드레서블에 포함하지 않는게 좋을 것 같다.

애초에 어드레서블로 사용함으로서 얻는 이점이 없다. (어차피 SubScene 하위에서는 Addressable 기반의 리소스 관리가 불가능하기 때문에)

 

만약 구조상 어드레서블 씬 하위에 SubScene을 포함하고 싶은 구조라면 SubScene을 감싸는 깡통 씬을 만들고 해당 깡통 씬을 SceneList에 포함시킨 후 어드레서블 씬이 로드된 상태에서 런타임에 깡통씬을 Addictive로 SceneManager를 통해 로드하면 될 것 같다. (테스트 해보니 문제 없이 동작한다.)

 

정리하면 SubScene을 포함한 메인 씬의 경우 어드레서블에서 제외 후 빌드 세팅의 Scene List에 체크되도록 하고  SubScene 도 어드레서블 에셋에 포함되지 않도록 조심하자. (SubScene이 배치된 메인 씬을 Scene List에 넣었기 때문에 SubScene들을 Scene List에 넣을 필요는 없다)

 

| Physics

 

충돌체에 Physics Body와 Physics Shape가 부착되어 있으면 물리 충돌체로 동작한다.

다음 필터를 지정하고, 필터의 조건에 맞는 개체 끼리 충돌 가능하다. Collision Reponse에 Collide Raise Collision Events로 설정해야 ICollisionEventsJob 과 같은 이벤트 감지 핸들러가 동작한다.

Belongs To: 나의 카테고리

Collides With : 나와 충돌할 카테고리