FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Unity SDKでのネットワーク処理をasync/awaitにする

f:id:mbaasdevrel:20200609160036p:plain

ネットワーク処理は非同期で行われます。そのため、Promiseやコールバック方式で行われてきましたが、ネストが深くなったり、変数のスコープが変わってしまうのが難点でした。そこで最近ではasync/awaitを使うケースが増えています。

今回はUnity SDKでasync/awaitを使う方法を紹介します。

APIレベルを変更する

async/awaitを使う際にはUnityのプロジェクト設定にて、API互換性レベルを.NET 4.xに変更してください。なお、変更後プロジェクトを開き直してください。

f:id:mbaasdevrel:20200609160036p:plain

ライブラリを読み込む

System.Threading.Tasks を追加します。

using System.Threading.Tasks;
using NCMB.Tasks;

これで準備完了です。

試す

実際のコードです。 SaveAsyncSaveTaskAsync のようにすることでUnityのTaskを使った処理に変わります。例えば保存処理は次のように書きます。

NCMBObject personA = new NCMBObject ("Book");
personA.Add ("title", "Alice");
await personA.SaveTaskAsync();
Debug.Log(personA);

検索も同様に、次のように FindAsyncFindTaskAsync と書きます。

NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("Book");
IList<NCMBObject> results = await query.FindTaskAsync();
foreach (NCMBObject obj in results) {
    Debug.Log(obj["title"]);
}

まとめ

async/awaitを使って書いた方がネットワーク処理が非同期のように書けてコードの見通しがよくなります。皆さんのUnityアプリ開発に役立ててください。

NIFCLOUD-mbaas/ncmb_unity: ニフクラ mobile backend Unity SDK

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。