UnityUnityでasync/await、Taskを使うための基礎的な内容をまとめました。void参考Unity2018.2C#6はじめにこの記事はUnityでasync/await、Taskを使うための基礎的な内容についてまとめています。入門編なので、async/await、Taskの概念の理解ととりあえず使えるようになることを目的としています。応用的、実用的な使い方は以下の記事にまとめていますので、必要に応じて参照してください。Taskとは?非同期処理の基礎知識async/await、Taskは「非同期処理」を行うための仕組みです。非同期処理とは何でしょうか?これには次の三つの意味があるようです。メインスレッドの処理を止めたくないから、ある独立した処理(IOとか)を別のスレッドに逃がす1.と同じ理由で、重い処理をシングルスレッドで複数フレームに分けて行う(Unityのコルーチン)計算を早く終わらせたいから同じ計算に複数のCPUコアを使うこのうち、async/awaitを使うと1.や2.がいい感じに書けます。Taskを組み合わせると1.がやりやすくなります。語弊を恐れずざっくり一言でまとめると、async/await、Taskを使うと重い処理を別のスレッドに逃がす処理が書きやすくなります。この辺りの話は下記の記事がわかりやすかったです。ufcpp.netTaskを理解するさてasync/awaitの使い方を理解するにはまずTaskというクラスを知っておく必要があります。Taskを使うと別スレッドでの処理が簡単に書けます。}}このあたりの話は以下の記事がわかりやすいです。ufcpp.netasync/awaitを理解するasync/awaitはTaskによるマルチスレッド処理を使いやすくするための構文です。こんな感じで使います。これはメインスレッドで処理される}まず、awaitを使うことでTaskの終了を待つことができます。このawaitはasync修飾子を付けたメソッド内でのみ使えるという決まりがあるので、メソッドにasync修飾子を付けています。これによりこのメソッドは非同期メソッドとなります。この非同期メソッドは、通常のメソッドから普通に呼び出せます。}}これはasync/awaitの基本的な使い方です。ExampleAsync()の戻り値を変数に入れている理由は次節で触れます。ExampleAsync();のように非同期メソッドの戻り値を変数に格納しました。これは、これをやらないと下記のような警告が無駄に表示されるためです。実は、この警告は非同期メソッドの戻り値をvoidにすることでも消せます。}}しかしこれはやってはいけません。void警察に怒られるようです。voidを残しておくとすごく叱責されるので注意してください。Qiitaまあ要するに、asyncなメソッドをawaitするかどうかはあくまで使う側が決めることだということです。非同期メソッドはawaitできるようにしておくべき、つまりTaskを返すべきです。それだと上述のような警告が出てしまうので、それは変数に入れることで消しておきましょうという話です。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。【Unity】指定したアセットのAssetBundle名を取得する【Unity】【シェーダ】スクリプトからVP行列を渡してシェーダで座標変換に使う【Unity】【シェーダ】FloatやVectorをリニアライズ対象にするGammaアトリビュート【Unity】【Addressable】アセットバンドルのダウンロード・ロード処理をカスタムする【Unity】【Addressable】リモートコンテンツカタログによるダウンロードとロードの仕組み月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。