通过 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 };
};

其他资源