通过 Cloud Code JavaScript 脚本访问 Leaderboards
您可以使用 Cloud Code JavaScript Leaderboards SDK 访问 Leaderboards。Cloud Code SDK 文档门户提供了所有可用方法的相关文档。
以玩家调用 Cloud Code 脚本为例。通过以下脚本,可以提交玩家的分数,检索分数条目(包括排名)并检索排行榜中的最高分。
JavaScript
const { LeaderboardsApi } = require("@unity-services/leaderboards-1.1");
module.exports = async ({ params, context, logger }) => {
// Retrieve the playerId and accessToken from the context
// allows you to ensure requests are scoped to the player
// who invoked the Cloud Code script.
const { projectId, playerId, accessToken } = context;
const { leaderboardId, score } = params;
// Initializing the LeaderboardsApi using the accessToken
// ensures the requests are made as the player who invoked the
// Cloud Code script.
const leaderboardsApi = new LeaderboardsApi({ accessToken});
const addScoreResult = await leaderboardsApi.addLeaderboardPlayerScore(projectId, leaderboardId, playerId, { score: score });
const getScoreResult = await leaderboardsApi.getLeaderboardPlayerScore(projectId, leaderboardId, playerId);
const getScoresResult = await leaderboardsApi.getLeaderboardScores(projectId, leaderboardId);
return { addScoreResultStatus: addScoreResult.status, getScoreResult: getScoreResult.data, getScoresResult: getScoresResult.data };
};
通过 Cloud Code 也可以对玩家作用域终端进行管理级别的访问。这样,您可以通过一个 Cloud Code 脚本来更新多个玩家的分数或单个玩家(除调用 Cloud Code 脚本的玩家之外)的分数。
JavaScript
const { LeaderboardsApi } = require("@unity-services/leaderboards-1.1");
module.exports = async ({ params, context, logger }) => {
const { projectId } = context;
// The below playerId comes from your input parameters. This can
// be any player that you wish.
const { leaderboardId, playerId, score } = params;
// Initialize the LeaderboardsApi using the context allows
// for admin-level access to Leaderboards endpoints.
const leaderboardsApi = new LeaderboardsApi(context);
const addScoreResult = await leaderboardsApi.addLeaderboardPlayerScore(projectId, leaderboardId, playerId, { score: score });
const getScoreResult = await leaderboardsApi.getLeaderboardPlayerScore(projectId, leaderboardId, playerId);
const getScoresResult = await leaderboardsApi.getLeaderboardScores(projectId, leaderboardId);
return { addScoreResultStatus: addScoreResult.status, getScoreResult: getScoreResult.data, getScoresResult: getScoresResult.data };
};