Name Last Update
..
Editor Loading commit data...
Scheduler Loading commit data...
Editor.meta Loading commit data...
Functor.cs Loading commit data...
Functor.cs.meta Loading commit data...
IEnumeratorExtensions.cs Loading commit data...
IEnumeratorExtensions.cs.meta Loading commit data...
LICENSE Loading commit data...
LICENSE.meta Loading commit data...
LockQueue.cs Loading commit data...
LockQueue.cs.meta Loading commit data...
MainThreadDispatcher.cs Loading commit data...
MainThreadDispatcher.cs.meta Loading commit data...
MonitorQueue.cs Loading commit data...
MonitorQueue.cs.meta Loading commit data...
README.md Loading commit data...
README.md.meta Loading commit data...
Schedulable.cs Loading commit data...
Schedulable.cs.meta Loading commit data...
Scheduler.cs Loading commit data...
Scheduler.cs.meta Loading commit data...
Scheduler.meta Loading commit data...
TaskChain.cs Loading commit data...
TaskChain.cs.meta Loading commit data...
Unit.cs Loading commit data...
Unit.cs.meta Loading commit data...

DepthFirstScheduler(深さ優先スケジューラー)

Asynchronous task scheduler for Unity-5.6 or later

これは、Unity5.6でTaskが無いことを補完するためのライブラリです。 木構造にタスクを組み立てて深さ優先で消化します。

  • タスクの実行スケジューラー(Unityメインスレッドやスレッドプール)を指定できる

使い方

var schedulable = new Schedulable<Unit>();

schedulable
    .AddTask(Scheduler.ThreadPool, () => // 子供のタスクを追加する
    {
        return glTF_VRM_Material.Parse(ctx.Json);
    })
    .ContinueWith(Scheduler.MainThread, gltfMaterials => // 兄弟のタスクを追加する
    {
        ctx.MaterialImporter = new VRMMaterialImporter(ctx, gltfMaterials);
    })
    .Subscribe(Scheduler.MainThread, onLoaded, onError);
    ;

Schedulable

T型の結果を返すタスク。

AddTask(IScheduler scheduler, Func firstTask)

子供のタスクを追加する。

ToDo: 一つ目の子供に引数を渡す手段が無い

ContinueWith

ContinueWithCoroutine

OnExecute

動的にタスクを追加するためのHook。

中で、

parent.AddTask

することで実行時に子タスクを追加できる。

Subscribe

タスクの実行を開始する。 実行結果を得る。

Scheduler

StepScheduler

Unity

CurrentThreadScheduler

即時

ThreadPoolScheduler

スレッド

ThreadScheduler

スレッド