|
|
(同じ利用者による、間の12版が非表示) |
行1: |
行1: |
− | ==Realtimedatabaseのインストール==
| + | [[Unity/Firebase/Realtimedatabase/インストール]] |
− | FirebaseDatabase.unitypackageをAssets/Importからインストールする
| + | |
| | | |
− | https://firebase.google.com/download/unity?hl=ja
| + | [[Unity/Firebase/Realtimedatabase/基本]] |
| | | |
− | ==料金課金周り==
| + | [[Unity/Firebase/Realtimedatabase/更新]] |
− | [[Gcp/Firebase/RealtimeDatabase]] [ショートカット] | + | |
| | | |
− | ==ルール==
| + | [[Unity/Firebase/Realtimedatabase/json]] |
− | 以下のようなルールになってると、更新できないので、test時は修正後のように
| + | |
− | 修正前
| + | |
− | <pre>
| + | |
− | {
| + | |
− | "rules": {
| + | |
− | ".read": false,
| + | |
− | ".write": false
| + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
− | 修正後
| + | |
− | <pre>
| + | |
− | {
| + | |
− | "rules": {
| + | |
− | ".read": true,
| + | |
− | ".write": true
| + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
| | | |
− | ==サンプル==
| + | [[Unity/Firebase/Realtimedatabase/リスト]] |
− | SampleScene.cs
| + | |
− | <pre>
| + | |
− | using System.Collections;
| + | |
− | using System.Collections.Generic;
| + | |
− | using UnityEngine;
| + | |
| | | |
− | using Firebase;
| + | [[Unity/Firebase/Realtimedatabase/削除]] |
− | using Firebase.Database;
| + | |
− | using Firebase.Unity.Editor;
| + | |
| | | |
− | public class SampleScene : MonoBehaviour
| + | [[Unity/Firebase/Realtimedatabase/切断]] |
− | {
| + | |
− | void Start()
| + | |
− | {
| + | |
− | // Get the root reference location of the database.
| + | |
− | DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
| + | |
| | | |
− | // 書き込み
| + | [[Unity/Firebase/Realtimedatabase/chat]] |
− | FirebaseDatabase.DefaultInstance.GetReference("users")
| + | |
− | .Child("name")
| + | |
− | .SetValueAsync("taro");
| + | |
| | | |
− | // 読み込み
| + | [[Unity/Firebase/Realtimedatabase/timestamp]] |
− | FirebaseDatabase.DefaultInstance.GetReference("users")
| + | |
− | .Child("name")
| + | |
− | .GetValueAsync().ContinueWithOnMainThread(task =>
| + | |
− | {
| + | |
− | if (task.IsFaulted)
| + | |
− | {
| + | |
− | Debug.LogError("not found users");
| + | |
− | }
| + | |
− | else if (task.IsCompleted)
| + | |
− | {
| + | |
− | DataSnapshot snapShot = task.Result;
| + | |
− | Debug.Log(snapShot.Value);
| + | |
− | }
| + | |
− | });
| + | |
− | | + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
− | 参考:https://firebase.google.com/docs/database/unity/retrieve-data?hl=ja
| + | |
− | | + | |
− | 参考:http://siguma-sig.hatenablog.com/entry/2018/09/30/213822
| + | |
− | | + | |
− | ==json更新==
| + | |
− | FirebaseDatabase.DefaultInstance.GetReference("users")
| + | |
− | .Child("name")
| + | |
− | .SetRawJsonValueAsync("{'name': 'taro','age' : 25}");
| + | |
− | | + | |
− | ==変更があったら呼び出し==
| + | |
− | <pre>
| + | |
− | public class SampleScene : MonoBehaviour
| + | |
− | {
| + | |
− | void Start()
| + | |
− | {
| + | |
− | // Get the root reference location of the database.
| + | |
− | DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
| + | |
− | | + | |
− | // 変更があったら呼び出し
| + | |
− | FirebaseDatabase.DefaultInstance.GetReference("user")
| + | |
− | .Child("name").ValueChanged += HandleNameValueChanged;
| + | |
− | | + | |
− | // 書き込み
| + | |
− | FirebaseDatabase.DefaultInstance.GetReference("user")
| + | |
− | .Child("name")
| + | |
− | .SetValueAsync("taro");
| + | |
− | }
| + | |
− | private void HandleNameValueChanged(object sender, ValueChangedEventArgs args)
| + | |
− | {
| + | |
− | if (args.DatabaseError != null)
| + | |
− | {
| + | |
− | Debug.LogError(args.DatabaseError.Message);
| + | |
− | return;
| + | |
− | }
| + | |
− | Debug.Log("HandleNameValueChanged=" + args.Snapshot.Value);
| + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
− | | + | |
− | ==テキストフィールドから送信して、別テキストで受信するまで==
| + | |
− | #UIからInputFieldを選択し、/Canvas/InputFieldを作成
| + | |
− | #UIからTextを選択し、/Canvas/CommonTextを作成
| + | |
− | #以下csを用意する。
| + | |
− | | + | |
− | 入力したテキストが、別端末の同アプリにリアルタイムに表示されるれば成功。
| + | |
− | | + | |
− | サンプル
| + | |
− | <pre>
| + | |
− | using System.Collections;
| + | |
− | using System.Collections.Generic;
| + | |
− | using UnityEngine;
| + | |
− | using UnityEngine.UI;
| + | |
− | | + | |
− | using Firebase;
| + | |
− | using Firebase.Database;
| + | |
− | using Firebase.Unity.Editor;
| + | |
− | | + | |
− | public class SampleScene : MonoBehaviour
| + | |
− | {
| + | |
− | DatabaseReference reference;
| + | |
− | void Start()
| + | |
− | {
| + | |
− | reference = FirebaseDatabase.DefaultInstance.RootReference;
| + | |
− | FirebaseDatabase.DefaultInstance.GetReference("user")
| + | |
− | .Child("name").ValueChanged += HandleNameValueChanged;
| + | |
− | | + | |
− | InputField input = GameObject.Find("/Canvas/InputField").GetComponent<InputField>();
| + | |
− | input.onValueChanged.AddListener(OnValueChanged);
| + | |
− | }
| + | |
− | // 受信
| + | |
− | void HandleNameValueChanged(object sender, ValueChangedEventArgs args)
| + | |
− | {
| + | |
− | if (args.DatabaseError != null)
| + | |
− | {
| + | |
− | Debug.LogError(args.DatabaseError.Message);
| + | |
− | return;
| + | |
− | }
| + | |
− | Debug.Log("HandleNameValueChanged=" + args.Snapshot.Value.ToString());
| + | |
− | GameObject.Find("/Canvas/CommonText").GetComponent<Text>().text = args.Snapshot.Value.ToString();
| + | |
− | }
| + | |
− | // 送信
| + | |
− | void SetName(string name)
| + | |
− | {
| + | |
− | Debug.Log("SetName=" + name);
| + | |
− | FirebaseDatabase.DefaultInstance.GetReference("user")
| + | |
− | .Child("name")
| + | |
− | .SetValueAsync(name);
| + | |
− | }
| + | |
− | // テキスト変更イベント
| + | |
− | void OnValueChanged(string value)
| + | |
− | {
| + | |
− | Debug.Log("OnValueChanged=" + value);
| + | |
− | SetName(value);
| + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
− | | + | |
− | ==階層==
| + | |
− | /で区切ったり、
| + | |
− | .Child("na/me")
| + | |
− | Childでつなげたり。
| + | |
− | .Child("na").Child("me")
| + | |
− | | + | |
− | ==jsonをそのまま送信==
| + | |
− | <pre>
| + | |
− | User user = new User("taro", "taro@example");
| + | |
− | string json = JsonUtility.ToJson(user);
| + | |
− | string userId = "111";
| + | |
− | FirebaseDatabase.DefaultInstance.GetReference("user").Child(userId)
| + | |
− | .SetRawJsonValueAsync(json);
| + | |
− | </pre>
| + | |
− | User.cs
| + | |
− | <pre>
| + | |
− | public class User
| + | |
− | {
| + | |
− | public string username;
| + | |
− | public string email;
| + | |
− | public User(string username, string email)
| + | |
− | {
| + | |
− | this.username = username;
| + | |
− | this.email = email;
| + | |
− | }
| + | |
− | }
| + | |
− | </pre>
| + | |
− | | + | |
− | ==keyを生成==
| + | |
− | userに存在しないキーを生成
| + | |
− | string key = FirebaseDatabase.DefaultInstance.GetReference("user").Push().Key;
| + | |
− | | + | |
− | ==参考==
| + | |
− | https://firebase.google.com/docs/database/unity/save-data?hl=ja
| + | |