追記: OSS版のライブラリはなくなります。https://firebase.google.com/docs/unity/setup を参考にしてください
Firebaseはリアルタイムで同期してくれるデータベースがあります。
Unityで使えたらゲームに手軽にオンライン要素を組み込むことができそうです。
ただ公式のSDKは絶賛開発中なので製品で使うのは厳しいです。
ゼミの課題で「オンライン対応してます!!!」みたいなことをしたい場合以外はやらないのが賢明だと思います。
環境
Firebase 3.5.0
Mac El Capitan
Unity 5.3.5f1
インストール
GitHubのリポジトリにfirebase.unitypackage
があるのでダウンロードします。
プロジェクトを開いた状態でダウンロードしたパッケージをクリックすれば取り込むAssetsを選択できます、とりあえず全部入れておきましょう。
ここからMacの人はFirebaseProxyのライブラリのリンクを切り替える必要があります。
僕の環境では/Library/Java/Home/jre/lib/server/libjvm.dylib
にあったので以下のコマンドをプロジェクトのルートで実行しました。
$ install_name_tool -change "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/server/libjvm.dylib" "/Library/Java/Home/jre/lib/server/libjvm.dylib" Assets/Plugins/Editor/FirebaseProxy.bundle/Contents/MacOS/FirebaseProxy
Firebase のセットアップ
コンソールで新規のプロジェクトを作成します。
Database > ルール で以下のようにセキュリティルールを変更しました。
完全に公開されちゃってるので 開発用以外ではやらないようにしておきましょう。
{
"rules": {
".read": true,
".write": true
}
}
ちゃんと認証を入れておきたかったのですがEditorでは匿名認証ができなくて諦めたからです。
AbndroidかiOSに書き出せば認証はできるかもしれないです。
動作確認
Assets/TestScript を編集しながら試しました。
using UnityEngine;
using System.Collections;
public class TestScript : MonoBehaviour
{
IFirebase firebase;
// Use this for initialization
void Start()
{
firebase = Firebase.CreateNew("https://<projectID>.firebaseio.com/");
firebase.ChildAdded += (sender, e) =>
{
Debug.Log("Child added!: " + sender);
};
firebase.ChildRemoved += (sender, e) =>
{
Debug.Log("Child removed!");
};
firebase.SetJsonValue("{\"example_child\":{\"child_working\" : true}}");
}
// Update is called once per frame
void Update()
{
}
}
これで実行するとルートディレクトリに書き込まれます。
pathを指定したい場合はCreateNewのところで以下のようにpathを指定します。
Firebase.CreateNew("https://<projectID>.firebaseio.com/player");
こうすることでplayer内に書き込めました。