Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
C# get_版本只能从主线程调用_C#_Database_Multithreading_Parse Platform_Unity3d - Fatal编程技术网

C# get_版本只能从主线程调用

C# get_版本只能从主线程调用,c#,database,multithreading,parse-platform,unity3d,C#,Database,Multithreading,Parse Platform,Unity3d,所以我使用parse.com(一个反手数据库提供商,由facebook制作)来完成我的unity项目。我遇到了一个严重的问题。这里是解释 只要我把我的同步代码从游戏中扔掉,一切都正常,但我需要它来让玩家将数据同步到服务器 下面是我得到的错误: get_版本只能从主线程调用。 加载场景时,将从加载线程执行构造函数和字段初始值设定项。 不要在构造函数或字段初始值设定项中使用此函数,而是将初始化代码移到Awake或Start函数中 这是我的user.cs代码: using UnityEngine; u

所以我使用parse.com(一个反手数据库提供商,由facebook制作)来完成我的unity项目。我遇到了一个严重的问题。这里是解释

只要我把我的同步代码从游戏中扔掉,一切都正常,但我需要它来让玩家将数据同步到服务器

下面是我得到的错误:

get_版本只能从主线程调用。 加载场景时,将从加载线程执行构造函数和字段初始值设定项。 不要在构造函数或字段初始值设定项中使用此函数,而是将初始化代码移到Awake或Start函数中

这是我的user.cs代码:

using UnityEngine;
using System.Collections;
using System.Threading;
using Parse;

public class User : MonoBehaviour {

    public bool isAuthenticated = false;
    public string userName = null;
    public int level;
    public int exp;
    public int money;
    public GoLobby golobby;
    public Sync sync;
    public bool isGoLobbyEnabled = false;

public void LoginUser(string username, string password)
    {

        var query = ParseObject.GetQuery("Member")
            .WhereEqualTo("Username", username)
            .WhereEqualTo("Password", password);
        query.FirstOrDefaultAsync().ContinueWith(t =>
                                       {
            ParseObject result = t.Result;
            //print (result);
            string playerName = result.Get<string>("Username");
            string playerPassword = result.Get<string>("Password");
            int playerLevel = result.Get<int>("Level");
            int playerexp = result.Get<int>("Experience");
            int playerMoney = result.Get<int>("Money");
            isAuthenticated = true;
            userName = playerName;
            money = playerMoney;
            exp = playerexp;
            sync.SyncToServer (userName, level, exp, money);
            isGoLobbyEnabled = true;
            GoLobby();
        });
    }

这可能与Unity5和最新的解析有关,对吗。。? Unity5+旧解析没有给出任何问题, Unity5+新解析(PushNotifications)出现错误。 我们已经为parse SDK打开了发行票


不要发布所有代码。正是我们需要的代码。编辑了这篇文章。删除了不需要的内容。
using UnityEngine;
using System.Collections;
using Parse;

public class Sync : MonoBehaviour {

    public void SyncToServer (string username, int level, int exp, int money)
    {
        var query2 = ParseObject.GetQuery ("Member")
            .WhereEqualTo ("Username", username);
        query2.FirstAsync ().ContinueWith (t =>
                                           {
            ParseObject obj = t.Result;
            Debug.Log (obj.ObjectId); //Works fine
            obj["Level"] = level;
            obj["Experience"] = exp;
            obj["Money"] = money;
            obj.SaveAsync();
        });
    }
}