
前提・実現したいこと
Unityで非同期処理を扱おうと思ったのですが、メインスレッド制約(メインスレッドでしかMonobehaviorの機能を使用できない)があるせいでさしたる用途を見つけられずにいます。
そこで皆さんがどのようなことにUnitaskやその他の非同期処理を使用しているかをうかがわせていただきたく思い質問させていただきました。
また、僕の非同期処理に対する考えに誤りがあれば指摘していただけると嬉しいです。
考えたこと
僕の考えとしてゲームにおける非同期処理は音の再生や揺れものの制御などゲームの状況に直接影響を及ばさない、いわゆる独立した投げっぱなしの処理にのみ使うべきであるのかなというものがあります。
極端な例ですが敵とプレイヤーの移動処理を別々のスレッドで行う、ということをすればプレイヤーと敵の間での座標の参照がうまくいかないようなトラブルが起きるのではないかと思うからです。
この考えに基づいて僕は非同期処理を運用しようとしたのですが、そうなるとリソースの管理や音の再生、イベントや時間の待ち受けくらいしか思いつきませんでした。
リソースのロードやインスタンス化はAddressablesのAPIで非同期処理が提供されているのでいいとしても、音の再生は先述の制約により非同期処理では行えません。
またイベントや時間の待ち受けもわざわざ非同期で行うほどのものかと思ってしまいます。
HPバーの更新などならともかくUIメニューを開いた時の動作などはそもそもほかの処理が止まっているのでそこまで負荷を気にする必要があるとは思えません。
ほかにもチャージ時間や無敵フレームの計測などもありますが、これらの大半はごく短い時間のみ計測されるものなので同じように気に掛ける必要があるとは思えません。
ボタンの入力などはメインスレッドの処理とタイミングがずれたりしないかが少し怖いです。
独立した投げっぱなしの処理にのみ使うべきである、という前提を含めてこれらの考えに間違いがあれば教えてくれると嬉しいです。
さらに非同期処理の用法について僕の考えが及んでいない点がありましたらそれも教えてくだされば幸いです。
どうぞよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Unity 2020 3.6f1
VisualStudio 2019



回答2件
あなたの回答
tips
プレビュー