2017-05-12 20 views
0

私はGameSparksを使用していますが、データベースから特定のデータを取得しようとしています。Unityオブジェクト参照のGamesparksがオブジェクトのインスタンスに設定されていません

「typeIt」が「script in used」に設定された「getItem」というイベントを設定しました。

実際にデータの説明フィールドにアクセスする「type」属性を使用して、そのイベントにアクセスするクラウドコードイベントを設定しました。テストハーネスで

var description = Spark.getData().type; // get the type we passed in 
if(description !== ""){ 
    // if the type wasnt an empty string, then we can use the type in our query 
    Spark.setScriptData('items', Spark.metaCollection('items').find({"description": description})); 
} 

、私が認証し、その後、このJSON私はステートメントがカウントを参照インスペクタで

{ 
    "@class": ".LogEventRequest", 
    "eventKey": "getItem", 
    "type": "Sharp" 
} 

とログイベントを行く:

{ 
    "@class": ".LogEventResponse", 
    "scriptData": { 
    "items": [ 
     { 
     "_id": { 
      "$oid": "59160a27feeace0001d90f7f" 
     }, 
     "shortCode": "sword", 
     "name": "Stone Sword", 
     "description": "Sharp", 
     } 
    ] 
    } 
} 
の要求と応答に2

私のUnityコードでは、すべて設定して認証し、ボタンをクリックすると以下を呼び出します:

 new GameSparks.Api.Requests.LogEventRequest() 
      .SetEventKey("getItem") 
      .SetEventAttribute("type", "Sharp") 
      .Send((response) => { 
      if (!response.HasErrors) { 
        GSData data = response.ScriptData.GetGSData("items"); 
        print("Item ID: " + data.GetString("name")); 
      } else { 
       Debug.Log("Error Saving Player Data..."); 
      } 
     }); 

ザッツ私はprint文を削除した場合

を「オブジェクトのインスタンスに設定されていないオブジェクト参照」のストリームを取得する場合、それはエラーをスローしません。テストハーネスがしているにも関わらず、シャープな説明は見つかっていないようです。

私は多くのバリエーションを試しましたが、動作させることはできません。

+0

あなたは 'response.ScriptData.GetGSData(「アイテム」)は'ヌルを返していることを確認することができます? – lockstock

+0

@lockstock問題が見つかりました。一種のオブジェクトではなく、オブジェクトの配列が返されていました。だから私はそのデータをポーリングするための応答を見送らなければならなかった。あなたがしたいと思っていない限り、私が家にいるときに私は答えとしてそれを書くことができます。また、配列の代わりに単一のオブジェクトを返す方法を含めることができますが、それでも私はまだ分かりません。 – DasBeasto

答えて

1

正常に検出されたので、エラーは、応答内のデータと、それを取得するために使用したゲッターとの間の不一致から来ていました。

あなたの "アイテムのフィールドを使用すると、

一覧データ= response.ScriptData.GetGSDataList(「アイテム」)を使用する必要があるだろう配列を含んでいるので、

となります。

Spark.metaCollection( 'アイテム')をfindOne({ "説明":説明})

は、あなたがあなたのクラウドコードのクエリを変更することができ、配列ではなく、単一のオブジェクトを返すには。

注意複数のドキュメントが提供されたクエリを満たす場合、mongoは見つかった最初のドキュメントを返します。

ご不明な点を持っているか、GameSparksを使用している間、あなたが経由してサポートチームに連絡することができます任意の問題が発生した場合 - https://support.gamesparks.net/support/home

関連する問題