facebook twitter hatena line email

「Unity/Firebase/Realtimedatabase」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(サンプル)
(サンプル)
行73: 行73:
  
 
参考:http://siguma-sig.hatenablog.com/entry/2018/09/30/213822
 
参考:http://siguma-sig.hatenablog.com/entry/2018/09/30/213822
 +
 +
==変更があったら呼び出し==
 +
<pre>
 +
public class SampleScene : MonoBehaviour
 +
{
 +
    void Start()
 +
    {
 +
        // Get the root reference location of the database.
 +
        DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
 +
 +
        // 変更があったら呼び出し
 +
        FirebaseDatabase.DefaultInstance.GetReference("users")
 +
            .Child("age").ValueChanged += HandleAgeValueChanged;
 +
 +
        // 書き込み
 +
        FirebaseDatabase.DefaultInstance.GetReference("users")
 +
        .Child("age")
 +
        .SetValueAsync(10);
 +
    }
 +
    private void HandleAgeValueChanged(object sender, ValueChangedEventArgs args)
 +
    {
 +
        if (args.DatabaseError != null)
 +
        {
 +
            Debug.LogError(args.DatabaseError.Message);
 +
            return;
 +
        }
 +
        Debug.Log("HandleAgeValueChanged=" + args.Snapshot.Value);
 +
    }
 +
}
 +
</pre>

2020年11月14日 (土) 17:34時点における版

Realtimedatabaseのインストール

FirebaseDatabase.unitypackageをAssets/Importからインストールする

https://firebase.google.com/download/unity?hl=ja

料金課金周り

Gcp/Firebase/RealtimeDatabase [ショートカット]

ルール

以下のようなルールになってると、更新できないので、test時は修正後のように 修正前

{
  "rules": {
    ".read": false,
    ".write": false
  }
}

修正後

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

サンプル

SampleScene.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using Firebase;
using Firebase.Database;
using Firebase.Unity.Editor;

public class SampleScene : MonoBehaviour
{
    void Start()
    {
        // Get the root reference location of the database.
        DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;

        // 書き込み
        FirebaseDatabase.DefaultInstance.GetReference("users")
        .Child("age")
        .SetValueAsync(10);

        // 読み込み
        FirebaseDatabase.DefaultInstance.GetReference("users")
        .Child("age")
        .GetValueAsync().ContinueWith(task =>
        {
            if (task.IsFaulted)
            {
                Debug.LogError("not found users");
            }
            else if (task.IsCompleted)
            {
                DataSnapshot snapShot = task.Result;
                Debug.Log(snapShot.Value);
        }
        });

    }
}

参考:https://firebase.google.com/docs/database/unity/retrieve-data?hl=ja

参考:http://siguma-sig.hatenablog.com/entry/2018/09/30/213822

変更があったら呼び出し

public class SampleScene : MonoBehaviour
{
    void Start()
    {
        // Get the root reference location of the database.
        DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;

        // 変更があったら呼び出し
        FirebaseDatabase.DefaultInstance.GetReference("users")
            .Child("age").ValueChanged += HandleAgeValueChanged;

        // 書き込み
        FirebaseDatabase.DefaultInstance.GetReference("users")
        .Child("age")
        .SetValueAsync(10);
    }
    private void HandleAgeValueChanged(object sender, ValueChangedEventArgs args)
    {
        if (args.DatabaseError != null)
        {
            Debug.LogError(args.DatabaseError.Message);
            return;
        }
        Debug.Log("HandleAgeValueChanged=" + args.Snapshot.Value);
    }
}