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