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

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

Unity SDKで配列に入ったデータを利用する方法

f:id:mbaasdevrel:20200609155631p:plain

Unity SDKのTipsです。データストアでは、様々なフォーマットのデータを扱えます。

  • 文字列
  • 数字
  • 日付
  • 真偽値
  • 位置情報
  • 配列
  • オブジェクト

今回はこの中でもデータを配列として保存した場合のデータ取得、およびコンバート法について紹介します。

元データの形式

配列は要素を自由に入力できます。たとえば次のように、数字や文字列、配列の入れ子なども自由に入れられます。

[1,"string",[1,2,3],{"a":"b"}]

ではこのデータを array フィールドに入れたとして、データのコンバート法を解説します。

データの取得

まずデータはArrayListとして取得します。

ArrayList res = obj["array"] as ArrayList;

数値の場合

データが数値の場合、long型にコンバートできます。

long num = (long) res[0];

文字列の場合

文字列の場合は ToString メソッドを使ってください。

string str = res[1].ToString();

配列の入れ子

配列を入れ子にしている場合は、ArrayListで取得します。

ArrayList numbers = res[2] as ArrayList;

オブジェクトの場合

オブジェクトはDictionary型として取得します。その際には値が文字列と分かっていたとしても、まずobject型でキャストしなければいけません。

Dictionary<string, object> dict = res[3] as Dictionary<string, object>;
Debug.Log(dict["a"].ToString()); // => b

まとめ

C#の場合、型のキャストをしないとデータを扱えません。配列型やオブジェクト型は柔軟にデータを入れられる反面、データを取得する際のことを考えないと不具合につながってしまうでしょう。ぜひキャスト方法を覚えて、便利に使ってください。

中津川 篤司

中津川 篤司

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