「Unity/Firebase/Realtimedatabase/更新」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→テキストフィールドから送信して、別テキストで受信するまで) |
|||
| 行89: | 行89: | ||
} | } | ||
</pre> | </pre> | ||
| + | ==UpdateChildrenAsyncで更新== | ||
| + | <pre> | ||
| + | DatabaseReference reference; | ||
| + | void Start() | ||
| + | { | ||
| + | reference = FirebaseDatabase.DefaultInstance.RootReference; | ||
| + | string key = FirebaseDatabase.DefaultInstance.GetReference("hoge").Push().Key; | ||
| + | Dictionary<string, object> childUpdates = new Dictionary<string, object>(); | ||
| + | childUpdates["/hoge/" + key] = "test"; | ||
| + | reference.UpdateChildrenAsync(childUpdates); | ||
| + | } | ||
| + | </pre> | ||
| + | 以下のようなデータが出来る。 | ||
| + | hoge/-MkRw53-s81CwOXXBFLa: "test" | ||
2021年9月25日 (土) 21:42時点における版
変更があったら呼び出し
public class SampleScene : MonoBehaviour
{
void Start()
{
// Get the root reference location of the database.
DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
// 変更があったら呼び出し
FirebaseDatabase.DefaultInstance.GetReference("users")
.Child("name").ValueChanged += HandleNameValueChanged;
// 書き込み
FirebaseDatabase.DefaultInstance.GetReference("users")
.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);
}
}
テキストフィールドから送信して、別テキストで受信するまで
- UIからInputFieldを選択し、/Canvas/InputFieldを作成
- UIからTextを選択し、/Canvas/RecerveTextを作成
- UIからTextを選択し、/Canvas/SendTextを作成
- 以下csを用意する。
入力したテキストが、別端末の同アプリにリアルタイムに表示されるれば成功。
サンプル
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("users")
.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/RecerveText").GetComponent<Text>().text = args.Snapshot.Value.ToString();
}
// 送信
void SetName(string name)
{
Debug.Log("SetName=" + name);
FirebaseDatabase.DefaultInstance.GetReference("users")
.Child("name")
.SetValueAsync(name);
GameObject.Find("/Canvas/SendText").GetComponent<Text>().text = name;
}
// テキスト変更イベント
void OnValueChanged(string value)
{
Debug.Log("OnValueChanged=" + value);
SetName(value);
}
}
UpdateChildrenAsyncで更新
DatabaseReference reference;
void Start()
{
reference = FirebaseDatabase.DefaultInstance.RootReference;
string key = FirebaseDatabase.DefaultInstance.GetReference("hoge").Push().Key;
Dictionary<string, object> childUpdates = new Dictionary<string, object>();
childUpdates["/hoge/" + key] = "test";
reference.UpdateChildrenAsync(childUpdates);
}
以下のようなデータが出来る。
hoge/-MkRw53-s81CwOXXBFLa: "test"
