Unity3d
GREEAPIを使用してゲームを作成していc#
ます。私はAction
リーダーボードのすべて(ユーザー名、スコア)を実行しようとしています。
コードは次のとおりです。
public static void LoadBestScoreFromFriends(Action<FriendAndScore> onComplete)
{
Gree.Leaderboard.LoadScores(LEADERBOARD_ID,
UnityEngine.SocialPlatforms.UserScope.FriendsOnly,
UnityEngine.SocialPlatforms.TimeScope.AllTime,
1,
100,
(IScore[] scores) => {
foreach (IScore iscore in scores)
{
// Since the username is needed, a second
// call to the API must be done
Gree.User.LoadUser(iscore.userID,
(Gree.User guser) => {
FriendAndScore friend = new FriendAndScore();
friend.Name = guser.nickname;
friend.Score = "" + iscore.value;
// Run the action for every (nickname, score value)
onComplete(friend);
}, (string error) => {
Debug.Log("Couldn't fetch friend! error: " + error);
});
}
});
}
ここでの問題は、iscore.value
それが常に同じであるということです。これはの最後の要素ですforeach
。ループが終了しLoadUser()
た後に終了するため、これは理にかなっています。foreach
そこで呼び出しを行うための2番目のメソッドを作成することを考えました。何かのようなもの:
private void GetTheUserAndCallTheAction(Action<FriendAndScore> onComplete, string userID, string score)
{
Gree.User.LoadUser(userID,
(Gree.User guser) => {
FriendAndScore friend = new FriendAndScore();
friend.Name = guser.nickname;
friend.Score = score;
onComplete(friend);
}, (string error) => {
Debug.Log("Couldn't fetch friend! error: " + error);
});
}
私はC#
初心者なので、これを処理するより良い方法があるかどうか知りたいと思いました。