게임엔진/DOTS

ECS - RequireForUpdate / Dependency

tsyang 2023. 3. 5. 13:32

2023.02.25 - [유니티/DOTS] - Entities - 컴포넌트 구조

RequireMatchingQueriesForUpdate


 

Entites에는

 

RequireMatchingQueriesForUpdate 라는 어트리뷰트가 존재한다.

 

이걸 시스템에 달아주고, ISystem이나 SystemBase를 상속한 class/struct의 OnCreate에 

 

위 두 가지 메서드를 호출해주면 해당 시스템은 매칭되는 Entity가 있을 경우에만 업데이트 된다.

 

위와 같은 방식으로 쓴다.

 

 

 

 


Dependency


Entities 샘플 코드를 보다 보면 위와 같이 dependency 설정을 해주는 코드들이 많다.

 

SystemState는 현재 월드의 상태가 전달된다고 보면 된다.

 

https://docs.unity3d.com/Packages/com.unity.entities@1.0/api/Unity.Entities.SystemBase.Dependency.html#Unity_Entities_SystemBase_Dependency

 

여기서 state.Dependency는 현재 월드에서 다른 job들이 사용 중인 component dependency를 포함한다. 이걸 Job의 Schedule에 넘겨주면, Job은 현재 의존성을 보고 작업을 수행할지 대기할지를 결정한다.

 

Schedule의 Return값은 수행할 Job의 Dependency를 기존과 조합한 새로운 Dependency이다. 이를 다시 state.Dependency에 저장해 줘서 다른 System이 사용할 수 있도록 하는 것.