mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-09 12:11:35 -05:00
| .. | ||
| Editor | ||
| Scheduler | ||
| DepthFirstScheduler.asmdef | ||
| DepthFirstScheduler.asmdef.meta | ||
| Editor.meta | ||
| Functor.cs | ||
| Functor.cs.meta | ||
| IEnumeratorExtensions.cs | ||
| IEnumeratorExtensions.cs.meta | ||
| LICENSE | ||
| LICENSE.meta | ||
| LockQueue.cs | ||
| LockQueue.cs.meta | ||
| MainThreadDispatcher.cs | ||
| MainThreadDispatcher.cs.meta | ||
| MonitorQueue.cs | ||
| MonitorQueue.cs.meta | ||
| README.md | ||
| README.md.meta | ||
| Schedulable.cs | ||
| Schedulable.cs.meta | ||
| Scheduler.cs | ||
| Scheduler.cs.meta | ||
| Scheduler.meta | ||
| TaskChain.cs | ||
| TaskChain.cs.meta | ||
| Unit.cs | ||
| Unit.cs.meta | ||
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
スレッド