code
June 15, 2023

Job Producer

После выхода Unity Jobs не сразу стало возможно создавать свои джобы, просто апи было не в публичном доступе. Сейчас же это возможно и давайте разберемся как это делать.

Для начала определимся что же мы хотим сделать. Давайте возьмем самый простой вариант и напишем аналог IJob:

public struct Job : IJobSingle {

public void Execute() {

}

}

Т.е. мы хотим сделать стандартную однопоточную джобу (многопточные делаются не сильно дольше), что нам для этого необходимо:

1. Интерфейс и скелет

2. Инициализация джобы

3. Сама джоба

С интерфейсом все просто:

https://pastebin.com/525gx464

Обратите внимание, что JobProducerType говорит нам о том, что этот интерфейс не абы кто, а это интерфейс великой джобы;)

Далее, иницилизация джобы. Мы должны вызвать сообщить шедуллеру, что в принципе у нас есть чего крутить. Для того, чтобы это заработало, нам нужно объявить инициализацию и вызвать ее в методе Schedule:

https://pastebin.com/rZ4GCbYx

Ну и финально - мы добавляем в наш Execute само выполнение:

https://pastebin.com/vKhUmDKX