mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-04-18 03:27:22 -05:00
40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# RuntimeImport(0.87) 非同期ロード
|
|
|
|
## awaitCaller 引き数
|
|
|
|
```csharp
|
|
public virtual async Task<RuntimeGltfInstance> LoadAsync(IAwaitCaller awaitCaller = null, ...)
|
|
```
|
|
|
|
awaitCaller によりロード時の挙動をカスタマイズできます。
|
|
|
|
```{literalinclude} ../../Assets/VRMShaders/GLTF/IO/Runtime/AwaitCaller/IAwaitCaller.cs
|
|
:language: csharp
|
|
:linenos:
|
|
```
|
|
|
|
* NextFrame: 処理を中断して次のフレームで再開します。ロード処理が長い場合に長時間アプリケーションが固まることを防ぎます
|
|
* Run: UnityEngine.Object にアクセスしない処理を別スレッドで実行します。タスクが終了したら await で Unity Script スレッドで続きを実行します。
|
|
|
|
## ImmediateCaller
|
|
|
|
デフォルトでは、`ImmediateCaller` が使われます。
|
|
`ImmediateCaller` タスクを即時に実行するので、同期実行となります。
|
|
|
|
* Play(Editor Play, build), Editor(not play), UnitTest でデッドロックしないための実装です。
|
|
|
|
```{literalinclude} ../../Assets/VRMShaders/GLTF/IO/Runtime/AwaitCaller/ImmediateCaller.cs
|
|
:language: csharp
|
|
:linenos:
|
|
```
|
|
|
|
## RuntimeOnlyAwaitCaller
|
|
|
|
* Play(Editor Play, build) 時に非同期実行する実装です
|
|
* `VRM10_Samples/VRM10Viewer` に使用例があります。
|
|
|
|
```{literalinclude} ../../Assets/VRMShaders/GLTF/IO/Runtime/AwaitCaller/RuntimeOnlyAwaitCaller.cs
|
|
:language: csharp
|
|
:linenos:
|
|
```
|