0

解析クラスからラベルにカウントを表示しようとしていますが、次のエラーが発生しています:

「CompareBaseObjectsInternal は、メイン スレッドからのみ呼び出すことができます。コンストラクターとフィールド初期化子は、シーンの読み込み時に読み込みスレッドから実行されます。コンストラクターまたはフィールド初期化子でこの関数を使用しないでください。代わりに、初期化コードを Awake または Start 関数に移動します。 ."

私のコードを以下に示します。誰でも私を助けることができますか?

ParseQuery<ParseObject> USQuery = ParseObject.GetQuery ("Sales")
    .WhereEqualTo ("transactionType", "Purchase")
    .WhereGreaterThan ("createdAt",DateTime.Now.AddDays(-1));

USQuery.CountAsync().ContinueWith(t =>
{
    int result=t.Result;
    labelUSSale.text=result.ToString();
});
4

1 に答える 1

0

NGUI ラベルの値は、メイン スレッドからのみ送信できます。ここでの簡単な解決策は、「結果」変数が変更されるまで待ってから、label.text を割り当てることです。タスクを調べることをお勧めします。Parse.com クエリを制御するためのより使いやすい方法があります。

https://parse.com/docs/unity_guide#tasks

これを試して:

IEnumerator GetSales()
{   
    int result = -1;

    ParseQuery<ParseObject> USQuery = ParseObject.GetQuery ("Sales").WhereEqualTo ("transactionType", "Purchase").WhereGreaterThan ("createdAt",DateTime.Now.AddDays(-1));

    USQuery.CountAsync().ContinueWith(t =>
    {
        result=t.Result;  
    });

    while (result == -1) yield return new WaitForSenOfFrame();
    labelUSSale.text=result.ToString();

}
于 2015-02-17T07:32:23.653 に答える