非同期処理

非同期処理

Unityのシーン描画や物理エンジンの処理を阻害しないように並列で動作する非同期処理としてコードを書く。

非同期処理には以下の実装がある。状況に応じた適切なものを確認しておくとよい。

Unity 標準 コルーチン(coroutine) Invoke

Unity 拡張 UniRx UniTask

C# async/await

参考

一定時間後にスクリプトの処理を呼び出す方法まとめ

2022年現在におけるUniRxの使いみち

async/await,disposableを使って素直で読みやすいコードを書く

Unityでasync/await、Task入門!非同期処理をスマートに書く

ラムダ式って苦手なんです。ぶっちゃけいらないですよね?

UniTaskを使おう!

GP08で紹介したコルーチンによる非同期処理とは別の手法を紹介する。

UniTask

外部パッケージをGithubからダウンロードしてUnityに追加する。
Unityのゲーム向けのタスク処理ライブラリが利用できる。
複数の非同期処理を便利に扱える。

提供元: cygameのエンジニア Cygames Engineers' Blog

参照:
【超初心者向け】UniTaskの始め方3つのポイント

UniTask入門

Invoke

わずかな遅延か数秒間後に特定の処理を実行させるにはUnityのInvoke関数を利用してもよい。

参照:
【初心者Unity】Invokeを使って関数を数秒後に実行する方法

async/await

  C#の非同期処理を利用する。専用の構文を利用してコルーチンより多少わかりやすく記述できる。
コルーチンと違って非同期処理の結果も取得できる。

参照:
【Unity】非同期処理を理解する〜async/await編〜

PlayerControllerをasync/await方式に書き換えた例