FRVRSDK.Tournament 覆盖限时竞赛活动 —— 共享起始 payload、共享排行榜。和”对局结束”流程天然搭配:每局结束都调一次 CreateOrPostScore,玩家要么是在创建一个新锦标赛,要么是在延伸他们当前的参赛记录。
if (!FRVRSDK.Tournament.IsSupported()) return;
bool canCreate = FRVRSDK.Tournament.IsSupportedAPI("create");
沙盒化 / 无服务器的渠道完全不支持锦标赛。单个动作(create、invite、…)可能被分别管控 —— 接按钮之前先 IsSupportedAPI 一下。
FRVRSDK.Tournament.PostScore(
tournamentId: "26406699882334539",
score: 1500,
() => Debug.Log("Score posted"),
err => Debug.LogError(err));
string payload = "{\"seed\":12345,\"mode\":\"endless\"}";
int score = 1500;
string endTime = "1774907214000"; // 自 epoch 起的毫秒。"0" = 默认(2 周)
FRVRSDK.Tournament.Create(
payload,
title: "Weekend Rush",
sortOrder: "HIGHER_IS_BETTER", // 计时类玩法用 "LOWER_IS_BETTER"
score,
endTime,
tournamentId => Debug.Log("Created: " + tournamentId),
err => Debug.LogError(err));
payload 是自由格式 JSON —— 每个参与者拿到的是同一个字符串,因此可以用它来给本局做 seed。
这是你在”你死了,显示成绩界面”时想要的调用。如果玩家不在锦标赛里,原生弹窗会提议创建一个;如果在,就提交分数。一次调用,在两种状态下都行为正确。
FRVRSDK.Tournament.CreateOrPostScore(
payload: "{}",
title: "Tournament",
sortOrder: "HIGHER_IS_BETTER",
score: 1500,
endTime: "0", // "0" = 默认 2 周结束时间
resultJson =>
{
// { action: "created" | "posted", tournamentId: "..." }
Debug.Log(resultJson);
},
err => Debug.LogError(err));
当前锦标赛(玩家正在参与的那个,如果有):
FRVRSDK.Tournament.GetCurrentTournament(
json =>
{
var t = JsonUtility.FromJson<TournamentInfo>(json);
Debug.Log(t.id);
},
err => Debug.LogError(err));
玩家完整的锦标赛列表:
FRVRSDK.Tournament.GetMyTournaments(
json => { /* JsonUtility.FromJson<TournamentInfoArray>(json) */ },
err => Debug.LogError(err));
宿主平台展示出来的活跃锦标赛:
FRVRSDK.Tournament.GetActiveTournaments(
json => { /* PlatformTournamentArray */ },
err => Debug.LogError(err));
FRVRSDK.Tournament.Join("26406699882334539",
() => Debug.Log("Joined!"),
err => Debug.LogError(err));
FRVRSDK.Tournament.Leave(
() => Debug.Log("Left!"),
err => Debug.LogError(err));
string options = JsonUtility.ToJson(new
{
image = imageBase64,
text = "X invites you to a tournament!",
cta = "Play Now"
});
FRVRSDK.Tournament.InvitePlayers(options,
() => Debug.Log("Players invited!"),
err => Debug.LogError(err));
image 是 base64 data URL —— 形状和 Social.Share 一致。