728x90
1. 코드 설명
두 개의 종속성을 하나로 합칠 때 사용하는 코드이다.
// 반환 타입은 JobHandle
JobHandle.CombineDependencies(JobHandle, JobHandle);
2. 필요 이유
Job은 필요에 따라 비동기로 진행되어야 하고 어느 시점에서 앞의 Job들이 완료되면 실행되게끔 처리해야 할 때가 있다. 이때, JobHandle.CombineDependencies 로 앞의 Job들의 종속성을 합쳐서 동기 시점을 맞출 수 있다.
3. 예제 코드
아래의 코드는 Job을 Schedule할 때 앞의 Job의 종속성을 매개변수로 전달하여 동기 방식으로 코드가 실행된다.
A가 끝나면 B가 실행되고 // B가 끝나면 C가 실행된다.
var jobHandleA = new JobA(){
}.Schedule(state.Dependency);
var jobHandleB = new JobB(){
//job1의 종속성을 넣어줬음.
//Job1이 완료되면 Job2가 실행됨
}.Schedule(jobHandle1 );
var state.Dependency = new JobC(){
// Job2의 종속성을 넣어줬음.
// Job2가 완료되면 Job3가 실행됨
}.Schedule(jobHandle2 );
아래의 코드는 Job을 예약할 때 시스템의 종속성을 매개변수로 넣어 실행하여 A와 B가 비 동기 방식으로 코드가 실행된다. 그리고 CombineDependencies으로 두개의 종속성을 합친 combinedDepency을 C의 스케쥴의 매개변수로 전달하여 앞의 A와 B가 완료되어야 C가 실행된다.
var jobHandle1 = new JobA(){
// State의 종속성을 Schedule의 매개변수로 넣었다.
}.Schedule(state.Dependency);
var jobHandle2 = new JobB(){
// State의 종속성을 Schedule의 매개변수로 넣었다.
}.Schedule(state.Dependency);
// 두개의 종속성을 합친다.
var combinedDepency = JobHandle.CombineDependencies(jobHandle1, jobHandle2);
var state.Dependency = new JobC(){
// A와 B의 종속성을 합친 combinedDepency을 Schedule의 매개변수로 넣었다.
// A와 B가 끝나야 C가 실행된다.
}.Schedule(combinedDepency );
'Unity DOTS > TIP' 카테고리의 다른 글
UNITY DOTS TIP - ComponentData를 세분화 해라 (0) | 2022.12.01 |
---|---|
UNITY DOTS - Unity.Mathematics.Random 랜덤 사용하기 (0) | 2022.11.28 |
UNITY DOTS - 거리 계산하기 (0) | 2022.11.25 |
Unity DOTS(ECS) 에서 Build 하는 방법 (1) | 2022.08.09 |
댓글