2016-05-16 5 views
0

私はUnityでGooglePlayServicesを使用する方法を学ぼうとしていますが、私は扱えない小さな問題があります。 だから私はリーダーボードからすべての情報を取得してログに表示することができますが、私は他のことはできません。ここに私のコードがあります:Unity3d、GooglePlayServices、PlayGamesPlatform.Instance.LoadScores - 変数に値を書き込めません

IScore[] scoresFromLeaderboard = null; 

    PlayGamesPlatform.Instance.LoadScores(
       GPGSIds.leaderboard_highscore_leaderboard, 
       LeaderboardStart.TopScores, 
       10, 
       LeaderboardCollection.Public, 
       LeaderboardTimeSpan.AllTime, 
       (data) => 
       { 
        scoresFromLeaderboard = data.Scores; 

        Debug.Log("Scoures count: " + scoresFromLeaderboard.Length); 

        foreach(IScore score in scoresFromLeaderboard) 
        { 
         Debug.Log("Score: " + score.formattedValue); 
        } 

       } 
    ); 

私は変数を追加しようとすると何も起こりません。また、私はこのforeachの操作を行いしようとすると:

PlayGamePlatform.Instance.LoadScore {..}の後
foreach(IScore score in scoresFromLeaderboard) 
        { 
         Debug.Log("Score: " + score.formattedValue); 
        } 

私が取得し、ログはありません...

公式ドキュメントには、それはリーダーボードからの情報を保存するようになりますされます私は、このように実行しようと、可能な場合、私は(Googleのコードは、プラグインのgitをプレイ)変数に任意の文字列を得ることはありません:

PlayGamesPlatform.Instance.LoadScores(
     GPGSIds.leaderboard_leaders_in_smoketesting, 
     LeaderboardStart.PlayerCentered, 
     100, 
     LeaderboardCollection.Public, 
     LeaderboardTimeSpan.AllTime, 
     (data) => 
     { 
      mStatus = "Leaderboard data valid: " + data.Valid; 
      mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length; 
     }); 

誰かが私が間違っているのか知っていますか?

答えて

0

ここで古い質問に答えようとしましたが、まったく同じ問題に直面しました。これまでの私の解決策は、他人を助けることを願っています。

GPGSIds.leaderboard_leaders_in_smoketestingを実際のリーダーボードIDに文字列( "abcd123")として変更しました。

また、.PublicではなくLeaderboardCollection.Socialを使用してください。それがデータを返すかどうかを確認します。

上記を実行すると、Xcodeログに返されたデータが表示されます。

しかし、私はかなりの難題も抱えています。一番迷惑なことは、Unity自体でこのようなことをテストすることはできないということです。毎回デバイスでテストする必要があります。これは大きな苦痛です。

関連する問題