2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2015.01.15
開発環境・ツールUnityからKiiCloudを使う
こんにちは、KTです。
UnityからKiiCloudに接続する対応が必要だったので、備忘録兼ねて簡単に紹介します。
※ KiiCloudで出来ることの一部しか使ってないのであしからず。
KiiCloudとはMBaasの一種で、ユーザ管理やデータ管理を提供しています。
詳細はリンクを参照。
KiiCloud上でUnity用のアプリを作成しておいてください。
ここではUnityとの繋ぎ込みの部分のみ説明します。
今回、データ管理のみしか使用していないので、
説明もデータ管理部分のみとなります。
ユーザ管理等々を使いたい方はググってください。
KiiCloudのサイトから、Unity用のSDKをダウンロード。
https://developer.kii.com/v2/downloads
ダウンロードが完了したら、Unityを起動し、
Assets > Import Package > Custom Package
からパッケージをインポート。
インポートが完了したらUnityのProjectビューにKiiディレクトリが生成されていることを確認してください。
Unity上で、適当なゲームオブジェクトを作成し、
Kii > Libs > KiiCloudUnitySDK > KiiInitializeBehaviour
をアタッチ。
その後、KiiCloudの管理ページから取得したApp ID、App Keyを
KiiInitializeBehaviourのパラメータに設定。
今回はユーザ管理を使わないため、下記の用にして仮ユーザでログインします。
public class Hoge : MonoBehaviour { void Start () { UserFields user = new UserFields(); user.Displayname = "test"; // 仮ユーザで登録 KiiUser.RegisterAsPseudoUser (user, (KiiUser u, Exception e) => { if (e != null) { Debug.LogError (e.Message); return; } // 登録したトークンでログイン KiiUser.LoginWithToken (KiiUser.AccessToken, (KiiUser u2, Exception e2) => { if (e2 != null) { Debug.LogError (e2.Message); } }); }); } }
バケットとはKiiCloud上のデータの種類分けに用いられる、ディレクトリのようなものです。(階層構造は持てませんが)
データを管理するために、まずはデータの入れ物となるバケットを用意します。
public class Hoge : MonoBehaviour { KiiBucket bucket; void Start() { bucket = Kii.Bucket("fuga"); } }
データをKiiObjectと呼ばれるKiiCloud上のデータ管理用オブジェクトに格納します。
KiiObjectはKiiBucket内に複数持つことが出来ます。
public Create (string message) { KiiObject obj = bucket.NewKiiObject(); // バケットにオブジェクトを追加 obj["date"] = DateTime.Now.ToString("yyyy/MM/dd HH:mm"); obj["text"] = message; // オブジェクトの保存 obj.Save ((KiiObject savedObj, Exception e) => { if (e != null) { Debug.LogError (e.Message); return; } // 成功時の処理 }); }
バケットに登録されているデータを検索するにはKiiQueryを使用します。
KiiQueryは、KiiClauseにより構成された検索用クエリです。
bucket.Query()に空のKiiQueryを渡すと全件検索になります。
検索結果はKiiQueryResult<KiiObject>オブジェクトに格納され、foreach等でKiiObjectを取り出すことが出来ます。
public Find () { try { KiiQuery q = new KiiQuery ( KiiClause.Equals ("id", 1) // "id"が1のデータを検索 ); // 検索 KiiQueryResult<KiiObject> result = bucket.Query(q); // 検索結果の参照 if (result != null) { foreach (KiiObject obj in result) { Debug.Log((string)obj["date"] + " : " + (string)obj["text"]); } } } catch (Exception e) { Debug.LogError (e.Message); } }
なお、一度の検索で取得できるデータは最大200件までです。
続きが必要であれば、以下のようにして201件目以降のデータを取得することが出来ます。
KiiQueryResult<KiiObject> result = bucket.Query(new KiiQuery()); // 全件取得 if (result.Count > 0) foreach (KiiObject o in result) { /* Do Something */ } // 続きの取得 while (result.HasNext) { result = result.GetNextQueryResult(); // Do Something }
KiiCloudのデータはKiiObjectのSaveメソッドを呼ぶことで更新出来ます。
public Update(string message) { // まずは検索してKiiObjectを取得 KiiQueryResult<KiiObject> result = bucket.Query(new KiiQuery()); if (result == null) return; KiiObject obj = result[0]; obj["text"] = message; obj.Save ((KiiObject updatedObj, Exception e) => { if (e != null) { Debug.LogError (e.Message); return; } // 更新後の処理 }); }
とりあえず、今回の対応で使ったのはここまで。
以上。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索