【问题标题】:How to store an array to Firebase via Unity SDK如何通过 Unity SDK 将数组存储到 Firebase
【发布时间】:2019-07-21 19:08:44
【问题描述】:

我正在尝试将 Int32[] 数组和 bool[] 数组存储到 Firebase,但它不适合我。我已经搜索了很多地方,但找不到解决方案。谁能告诉我,如何将数组从 Unity 存储到 Firebase 实时数据库。

我正在使用System.Reflection 来获取UserPrefs 类的所有公共静态字段。

这是代码,我正在尝试做这项工作......

        System.Type type = typeof(UserPrefs);
        FieldInfo[] fields = type.GetFields();
        foreach (var field in fields) {
            if (user != null)    
        dbReference.Child("users").Child(user.UserId).Child(field.Name).SetValueAsync(field.GetValue(null));
            else
                    Debug.LogError("There is no user LoggedIn to write...");
        }

上面的代码保存了数组以外的所有值。数组上给出的错误如下:

InvalidCastException:无法从源类型转换到目标 类型。 Firebase.Database.Internal.Utilities.Validation.ValidateWritableObject (System.Object 对象)

任何帮助将不胜感激...

【问题讨论】:

    标签: arrays firebase unity3d firebase-realtime-database


    【解决方案1】:

    你需要这样的课程。

    public class MyClass
    {
        public int[] intArray = new int[10];
    }
    

    然后你可以像这样将该对象写入 Firebase。

    public void WriteArrays()
    {
        MyClass temp = new MyClass();
    
        for (int i = 0; i < temp.intArray.Length; i++)
        {
            temp.intArray[i] = i;
        }
    
        databaseReference.Child("MyArrayNode").SetRawJsonValueAsync(JsonUtility.ToJson(temp));
    }
    

    databaseReference 是对您的根目录的引用。

    您也可以为 bool[] 执行此操作。

    【讨论】:

    • 可以有很多其他类型的数组。我需要使代码通用。为所有可能的数组创建类,循环迭代然后保存到 Firebase 并不是一个好的解决方案。所有这些都将在加载数据时再次完成。
    • 将 json 传递给 firebase 是与 firebase 通信的首选方式。根据它设计。
    • 所以,你是说我需要设计自己的 json 对象,以防我想将数组保存到 Firebase。如果是这样,你能给我任何示例代码来为数组制作一个 json 吗?
    • 我的意思是,每当您想向 Firebase 传递不止一件东西时,请使用 json。您可以使用 Unity 的内置 json 实用程序。
    【解决方案2】:

    对于更通用的解决方案,您可以复制建议 here 的 JsonHelper 类。

    示例用法:

    string jsonArray = JsonHelper.ToJsonArray(mySerializeableList);
    var nodeToUpdate = this.dbReference.Child("wantedNode");
    nodeToUpdate.SetRawJsonValueAsync(jsonArray);
    

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 2020-11-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2021-07-30
      • 2019-01-23
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多