ネットワーク処理は非同期で行われます。そのため、Promiseやコールバック方式で行われてきましたが、ネストが深くなったり、変数のスコープが変わってしまうのが難点でした。そこで最近ではasync/awaitを使うケースが増えています。
今回はUnity SDKでasync/awaitを使う方法を紹介します。
APIレベルを変更する
async/awaitを使う際にはUnityのプロジェクト設定にて、API互換性レベルを.NET 4.xに変更してください。なお、変更後プロジェクトを開き直してください。
ライブラリを読み込む
System.Threading.Tasks
を追加します。
using System.Threading.Tasks; using NCMB.Tasks;
これで準備完了です。
試す
実際のコードです。 SaveAsync
を SaveTaskAsync
のようにすることでUnityのTaskを使った処理に変わります。例えば保存処理は次のように書きます。
NCMBObject personA = new NCMBObject ("Book"); personA.Add ("title", "Alice"); await personA.SaveTaskAsync(); Debug.Log(personA);
検索も同様に、次のように FindAsync
を FindTaskAsync
と書きます。
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アプリ開発に役立ててください。