如何在 Unity 中加载分数?
Posted
技术标签:
【中文标题】如何在 Unity 中加载分数?【英文标题】:How to load scores in Unity? 【发布时间】:2017-11-04 19:41:39 【问题描述】:我在 Google Play 上发布了一个简单的游戏。当玩家赢得比赛时,他的分数应该在排行榜中增加。我的问题是当玩家赢得游戏时,应用程序停止。我认为问题出在PlayGamesPlatform.Instance.LoadScores
,因为当我删除这部分时,没有人有问题。另外,我想注意到并不是每个玩家在游戏中都有这样的问题。这个问题只发生在那些从未赢得比赛的人身上(他们在排行榜上没有得分)。所以,PlayGamesPlatform.Instance.LoadScores
只适用于那些已经在排行榜上得分的人。
我的脚本:
PlayGamesPlatform.Instance.LoadScores(GPGSIds.leaderboard_rating, GooglePlayGames.BasicApi.LeaderboardStart.PlayerCentered, 1, GooglePlayGames.BasicApi.LeaderboardCollection.Public, GooglePlayGames.BasicApi.LeaderboardTimeSpan.AllTime, (GooglePlayGames.BasicApi.LeaderboardScoreData data) =>
long score;
if (long.TryParse(data.PlayerScore.formattedValue, out score))
Social.ReportScore(score + 50, GPGSIds.leaderboard_rating, (bool success) => );
else
Social.ReportScore(50, GPGSIds.leaderboard_rating, (bool success) => );
);
【问题讨论】:
你可以尝试将所有玩家的分数设置为默认 0,以便尚未玩过的玩家可以调用 loadScores 吗? @noogui 谢谢。它帮助了我 吉!很高兴听到它对您有用。 【参考方案1】:试试这个google sample from github
使用PlayGamesPlatform.LoadScores()
此方法直接使用 PlayGamesPlatform。这种方法在访问排行榜数据时提供了额外的灵活性和信息。
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;
);
LoadScores()
的参数为:
leaderboardId 起始位置(最高分或以玩家为中心)行数 排行榜收集(社交或公共)时间跨度(每天、每周、 all-time) 回调接受 LeaderboardScoreData 对象。这 LeaderboardScoreData 类用于将信息返回给 加载分数时的调用者。成员是: 1.id - 排行榜id 2. Valid - 如果返回的数据有效(调用成功)则为true 3. Status - 的ResponseStatus 调用 4. ApproximateCount - 中的近似分数数 leaderboard 5. Title - 排行榜的标题 6. PlayerScore - 当前玩家的得分 7. Scores - 得分列表 8. PrevPageToken - 可用于调用 LoadMoreScores() 的令牌 获取上一页的分数。 9. NextPageToken - 一个可以 用于调用 LoadMoreScores() 获取下一页分数。
void GetNextPage(LeaderboardScoreData data)
PlayGamesPlatform.Instance.LoadMoreScores(data.NextPageToken, 10,
(results) =>
mStatus = "Leaderboard data valid: " + data.Valid;
mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
);
附加参考How to get the user score value from Google Play Services Leaderboard。
附注:
尝试将所有玩家的分数设置为默认值 0,以便尚未玩过的玩家可以调用 loadScores。
【讨论】:
以上是关于如何在 Unity 中加载分数?的主要内容,如果未能解决你的问题,请参考以下文章