안내해주신 가이드라인보고 개발하고있는데
리더보드에 추가필드를 제작해서 호출해야된다는 말인건가요? 그냥
public void UpdateLeaderboardStage(int newStage)
{
const string tableName = "UserStageData";
string leaderboardUuid = StageRankUUID;
string rowIndate = InDateManager.Get(tableName);
if (string.IsNullOrEmpty(rowIndate))
{
Debug.LogError("[Rank] inDate 없음");
return;
}
// 내 랭킹 조회 (성공/실패와 무관하게 처리 계속 진행)
var myRankBro = Backend.Leaderboard.User.GetMyLeaderboard(leaderboardUuid);
int oldScore = 0;
bool isRegistered = false;
// 조회 성공 + 등록된 데이터가 있는 경우만 oldScore 세팅
if (myRankBro.IsSuccess())
{
var myRankList = myRankBro.GetUserLeaderboardList();
if (myRankList != null && myRankList.Count > 0)
{
oldScore = int.Parse(myRankList[0].score);
isRegistered = true;
}
}
else if (myRankBro.GetStatusCode() == "404")
{
string msg = myRankBro.GetMessage();
if (msg.Contains("userRank not found"))
{
//랭킹 등록 안된상태라면
isRegistered = false;
}
else if (msg.Contains("leaderboard not found"))
{
// 리더보드 UUID 잘못됨
Debug.LogError($"[Rank] 잘못된 UUID: {myRankBro}");
return;
}
}
else
{
Debug.LogError($"[Rank] 내 랭킹 조회 실패: {myRankBro}");
return;
}
// else: 실패했거나 등록이 아예 없는 경우 → 신규 등록으로 간주
// 랭킹 등록 안 됐거나, 점수가 더 크면 업로드
if (!isRegistered || newStage > oldScore)
{
var param = new Param();
param.Add("HighStageIndex", newStage);
param.Add("extraData", DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString());
var bro = Backend.Leaderboard.User.UpdateMyDataAndRefreshLeaderboard(leaderboardUuid, "UserStageData", rowIndate, param);
Debug.Log(bro);
if (bro.IsSuccess())
{
Debug.Log(isRegistered
? $"[Rank] 기록 갱신 성공: {oldScore} → {newStage} {param}"
: $"[Rank] 신규 등록 성공: {newStage}");
}
else
{
Debug.LogError($"[Rank] 리더보드 업로드 실패: {bro}");
}
}
else
{
Debug.Log($"[Rank] 기존 기록({oldScore}) >= 새 기록({newStage}), 업로드 생략");
}
}
public void PrintTop100Leaderboard()
{
string leaderboardUuid = StageRankUUID; // 실제 UUID 넣으세요
// 1 ~ 50위
var bro1 = Backend.Leaderboard.User.GetLeaderboard(leaderboardUuid, 50, 0);
if (bro1.IsSuccess())
{
var list = bro1.GetUserLeaderboardList();
foreach (var item in bro1.GetUserLeaderboardList())
{
Debug.Log($"{item.rank}위 ({item.score}) : {item.nickname}, 등록시간={item.extraData}");
}
}
else
{
Debug.LogError($"[Rank] 1~50위 조회 실패: {bro1}");
}
}
이렇게해서 호출하니까 item.extraData값이 비어있던데 가이드라인하고 무슨차인지 모르겠습니다.
그리고 또하나 리더보드에서 순위 삭제시 삭제안되는 문제가 너무자주발생합니다.
다른분들 글보면 답변으로는 삭제된건데 캐시가 남아서 보이는거다 라고 적혀잇는데 삭제가된거면
유니티에서 호출 했을때 해당 랭킹들은 호출이안되야하는거아닌가요? 삭제 시도한 데이터들도 모두 정상적으로 호출이됩니다.
리더보드가 안정화가 제대로 이뤄진게맞는걸까요?