Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何通过Unity SDK将阵列存储到Firebase_Arrays_Firebase_Unity3d_Firebase Realtime Database - Fatal编程技术网

Arrays 如何通过Unity SDK将阵列存储到Firebase

Arrays 如何通过Unity SDK将阵列存储到Firebase,arrays,firebase,unity3d,firebase-realtime-database,Arrays,Firebase,Unity3d,Firebase Realtime Database,我正在尝试将Int32[]数组和bool[]数组存储到Firebase,但它对我不起作用。我搜索了很多地方,但找不到解决办法。谁能告诉我,如何从Unity将一个数组存储到Firebase实时数据库中 我正在使用System.Reflection获取类UserPrefs的所有公共静态字段 这是代码,我正在尝试做这项工作 System.Type type = typeof(UserPrefs); FieldInfo[] fields = type.GetFields(

我正在尝试将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对象)


非常感谢您的帮助……

您需要这样的课程

public class MyClass
{
    public int[] intArray = new int[10];
}
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));
}
然后您可以像这样将该对象写入Firebase

public class MyClass
{
    public int[] intArray = new int[10];
}
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));
}
public void WriteArrays()
{
MyClass temp=新的MyClass();
对于(int i=0;i
数据库引用是对根目录的引用


同样,您也可以对您的bool[]执行此操作。

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

用法示例:

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

可以有许多其他类型的数组。我需要使代码通用。为所有可能的数组创建类,在循环中迭代,然后保存到Firebase,这不是一个好的解决方案。所有这些都将在加载数据时再次完成。将json传递给firebase是与firebase通信的首选方式。所以,你是说我需要设计自己的json对象,以防我想将数组保存到Firebase。如果是这样的话,您能给我一些示例代码来为数组生成json吗?我的意思是,无论何时您想要向Firebase传递多个内容,都可以使用json。您可以使用Unity的内置json实用程序。