2025.08.29
Laravelで空判定にif文を使うとハマる理由
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などへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
1
2025.08.29
Laravelで空判定にif文を使うとハマる理由
2

2025.08.29
Git SSH接続でfetch/pullができなくなった時の対処法
3

2025.08.28
【体験談】Amazon Linux 2でMySQLインストール時のOpenSSL・GPG key エラーにハマった話
4
2025.08.28
【AWS】SSMポートフォワーディングとInstance Connectを利用したプライベートEC2へのSSH接続手順
5
2025.07.24
Log::info()が使えない!?Laravel.logのPermission denied エラーを解決する(Docker環境)
タグ検索