システム内の処理の実行順序 - Katsuya100/SceneLayer-Trial GitHub Wiki
シーケンスイベントの実行順序
シーケンスイベントについてはこちらを参照してください。
遷移と更新の実行順序
一つの遷移におけるイベントの実行順序を下記に明記します。
横軸:フレーム
縦軸:同一フレーム内の処理順(上から順)
gantt
dateFormat HH:mm
axisFormat %Mf
Transition:active, 00:00, 2m
Entry:active, 00:01, 1m
PostTransition:active, 00:01, 3m
Update:active, 00:01, 8m
PreTransition:active, 00:06, 3m
Exit:active, 00:08, 1m
Transition:done, 00:08, 2m
関数レベルに分解すると下記のようになります。
gantt
dateFormat HH:mm
axisFormat %Mf
section Transition
TransitionBehaviour.OnTransit:active, 00:00, 2m
LayerBehaviour.OnChildTransit:active, 00:00, 2m
LayerBehaviour.OnTransitTo:active, 00:00, 2m
LayerBehaviour.OnTransitFrom:active, 00:00, 2m
LayerBehaviour.OnParentTransitTo:active, 00:00, 2m
LayerBehaviour.OnParentTransitFrom:active, 00:00, 2m
section Entry
LayerBehaviour.OnEntry:active, 00:01, 1m
section PostTransition
TransitionBehaviour.OnPostTransit:active, 00:01, 3m
LayerBehaviour.OnPostChildTransit:active, 00:01, 3m
LayerBehaviour.OnPostTransitTo:active, 00:01, 3m
LayerBehaviour.OnPostTransitFrom:active, 00:01, 3m
LayerBehaviour.OnPostParentTransitTo:active, 00:01, 3m
LayerBehaviour.OnPostParentTransitFrom:active, 00:01, 3m
section Update
LayerBehaviour.OnUpdate:active, 00:01, 8m
section PreTransition
TransitionBehaviour.OnPreTransit:active, 00:06, 3m
LayerBehaviour.OnPreChildTransit:active, 00:06, 3m
LayerBehaviour.OnPreTransitTo:active, 00:06, 3m
LayerBehaviour.OnPreTransitFrom:active, 00:06, 3m
LayerBehaviour.OnPreParentTransitTo:active, 00:06, 3m
LayerBehaviour.OnPreParentTransitFrom:active, 00:06, 3m
section Exit
LayerBehaviour.OnExit:active, 00:08, 1m
section Transition
TransitionBehaviour.OnTransit:done, 00:08, 2m
LayerBehaviour.OnChildTransit:done, 00:08, 2m
LayerBehaviour.OnTransitTo:done, 00:08, 2m
LayerBehaviour.OnTransitFrom:done, 00:08, 2m
LayerBehaviour.OnParentTransitTo:done, 00:08, 2m
LayerBehaviour.OnParentTransitFrom:done, 00:08, 2m
Layerの階層間における実行順序
Entry
、Update
は親から順に実行されます。
対して、Exit
は子から順に実行されます。
横軸:フレーム
縦軸:同一フレーム内の処理順(上から順)
gantt
dateFormat HH:mm
axisFormat %Mf
親Layer.Entry:active, pentry, 00:00, 1m
子Layer.Entry:active, centry, 00:00, 1m
親Layer.Update:active, pupdate, 00:00, 8m
子Layer.Update:active, cupdate, 00:00, 8m
子Layer.Exit:active, cexit, 00:07, 1m
親Layer.Exit:active, pexit, 00:07, 1m
Loaderの実行順序
一つのLoader処理におけるイベントの実行順序を下記に明記します。
下記のグラフでは
- 親子の
Layer
がある。 - それぞれ2つずつ
Loader
を持っている。 - これらすべてのLoad処理が一斉に走ったとします。
横軸:フレーム
縦軸:同一フレーム内の処理順(上から順)
gantt
dateFormat HH:mm
axisFormat %Mf
section 親
Loader1.Load:active, pl1, 00:00, 2m
Loader1.Instantiate:active, pi1, after pl1, 1m
Loader2.Load:active, pl2, 00:00, 3m
Loader2.Instantiate:active, pi2, after pl2, 4m
section 子
Loader1.Load:active, cl1, after pl1 pl2, 3m
Loader1.Instantiate:active, ci1, after pi1 pi2 cl1, 1m
Loader2.Load:active, cl2, after pl1 pl2, 2m
Loader2.Instantiate:active, ci2, after pi1 pi2 cl2, 1m
各LoaderのInstantiate
は、Load
の後に走ります。
子のLoad
は親のLoad
に依存しているため、親のLoad
が終わってから実行されます。
子のInstantiate
は親のInstantiate
に依存しているため、親のInstantiate
が終わってから実行されます。
子同士、親同士の Load
Instantiate
処理はいずれも並列で処理されますが、互いに依存関係を持たせることも可能です。
依存関係をもたせる方法はLoad順序の制御を参照してください。