Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
使用Firebase在Unity中添加用户时出错_Firebase_Unity3d_Firebase Realtime Database_Unityscript - Fatal编程技术网

使用Firebase在Unity中添加用户时出错

使用Firebase在Unity中添加用户时出错,firebase,unity3d,firebase-realtime-database,unityscript,Firebase,Unity3d,Firebase Realtime Database,Unityscript,以下是我向Firebase数据库添加新注册用户的代码: TransactionResult AddUserToDatabaseTransaction(MutableData mutableData) { if (mutableData != null) { List<object> users = mutableData.Value as List<object>; if (users == null) {

以下是我向Firebase数据库添加新注册用户的代码:

    TransactionResult AddUserToDatabaseTransaction(MutableData mutableData) {


    if (mutableData != null)
    {
    List<object> users = mutableData.Value as List<object>;

    if (users == null) 
      {   users = new List<object>();
                                          }

    users = new List<object>();
    // Now we add the new score as a new entry that contains the email address and score.
    Dictionary<string, object> newUserRegistration = new Dictionary<string, object>();

    newUserRegistration["Dateofbirth"] = "22/03/1980";
    newUserRegistration["Email"] = auth.CurrentUser.Email;
    newUserRegistration["Full Name"] = "cool";
    newUserRegistration["LastLoggedIn"] = "27/06/2017";
    newUserRegistration["RegistrationDate"] = "26/04/2017";



    users.Add(newUserRegistration);

    // You must set the Value to indicate data at that location has changed.
    mutableData.Value = users;
    return TransactionResult.Success(mutableData);
}
else return TransactionResult.Abort();
  }

 public void AddUserToDatabase() {
    DatabaseReference reference = FirebaseDatabase.DefaultInstance.GetReference("users");
    DatabaseReference usersaddnow = reference.Child(auth.CurrentUser.UserId);

    usersaddnow.RunTransaction(AddUserToDatabaseTransaction)
      .ContinueWith(task => {
      if (task.Exception != null) {
         information.text +=task.Exception.ToString();
      } else if (task.IsCompleted) {
        information.text += " Transaction complete.";
      }
    }
    );
  }
TransactionResult AddUserToDatabaseTransaction(MutableData MutableData){
if(可变数据!=null)
{
列表用户=可变数据。值为列表;
如果(用户==null)
{users=新列表();
}
用户=新列表();
//现在,我们将新分数添加为包含电子邮件地址和分数的新条目。
Dictionary newUserRegistration=新字典();
新用户注册[“出生日期”]=“1980年3月22日”;
newUserRegistration[“Email”]=auth.CurrentUser.Email;
newUserRegistration[“全名”]=“酷”;
newUserRegistration[“LastLoggedIn”]=“2017年6月27日”;
newUserRegistration[“注册日期”]=“2017年4月26日”;
添加(newUserRegistration);
//必须设置该值以指示该位置的数据已更改。
mutableData.Value=用户;
返回TransactionResult.Success(可变数据);
}
else返回TransactionResult.Abort();
}
public void AddUserToDatabase(){
DatabaseReference=FirebaseDatabase.DefaultInstance.GetReference(“用户”);
DatabaseReference usersaddnow=reference.Child(auth.CurrentUser.UserId);
usersaddnow.RunTransaction(AddUserToDatabaseTransaction)
.ContinueWith(任务=>{
if(task.Exception!=null){
information.text+=task.Exception.ToString();
}else if(任务已完成){
information.text+=“交易完成。”;
}
}
);
}
以下是数据库的快照:

所以,我正在尝试向数据库添加一个用户。 我成功地添加了它们,正如您从图片中看到的,但它在用户详细信息之前添加了一个零子项。你能告诉我为什么会这样吗?
几个小时来我一直试图摆脱这个问题,但我找不到解决办法

问题在于arraylist 它通过自己的索引设置数据,如0,1等

因此,在unity中,它似乎默认使用这些索引 我可以访问测试和内部元素
以这种方式管理和访问数据更容易

我不是Unity方面的专家,但从代码来看,您正在推送的用户数据(
users
)似乎类似于数组值(技术上是一个列表),其中包含一个字典。因此,从技术上讲,您正在将一个数组数据保存到Firebase,Firebase将以这种方式处理它。
0
节点表示
users
数组中的第一项。你能试着直接按一下字典吗?希望这能让我们干杯!谢谢你的回答。我不知道怎么做,但是我发布的代码是一个修改过的代码。原始版本在这里:。原始代码似乎添加了一个递增1的子级。我想不出哪个函数对子函数进行递增和相加。如果我这样做了,我可以修改它,让它直接添加信息,跳过子添加。。。。有人有什么想法吗?