
1. 데이터 테이블 생성
데이터 테이블에 있는 데이터를 비교하는 것이기 때문에 데이터 테이블을 생성하고 해당 데이터가 존재해야 한다.
https://kkln2486.tistory.com/445
뒤끝 회원가입, 로그인, 데이터 송수신
회원가입 public void SignUp(){ BackendReturnObject bro = Backend.BMember.CustomSignUp("ID", "PASSWORD"); if (bro.IsSuccess()) { Debug.Log("회원가입에 성공했습니다"); }} * 뒤끝 서버 연동 후, 사용 가능 로그인public void Login
kkln2486.tistory.com
2. 랭킹 생성


다음과 같이 랭킹 내용과 맞게 설정
- 테이블 : 생성한 데이터 테이블 선택
- 컬럼 : 랭킹 순위에 기준이 되는 데이터 선택
- 정렬 기준 : 높은 숫자가 높은 랭킹을 가진다면 내림차순 선택

UUID를 복사한다.
※ 추가 항목 사용
score 데이터 외, Atk, Def, Coin 등 추가 데이터를 저장해야 하면 추가 항목에서 선택한다.
3. 데이터 테이블 갱신, 랭킹 데이터 갱신
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BackEnd;
public class RankSystem : MonoBehaviour
{
// 복사한 UUID
private const string RANK_UUID = "0e2dbad0-2f28-11ef-aa40-01846ff1933e";
public void UpdateRank(int value)
{
UpdateMyRankData(value);
}
private void UpdateMyRankData(int value)
{
string rowInDate = string.Empty;
// 랭킹 데이터를 업데이트하려면 게임 데이터에서 사용하는 데이터의 inDate 값 필요
BackendReturnObject bro = Backend.GameData.GetMyData("USER_DATA", new Where());
if (!bro.IsSuccess())
{
Debug.LogError("랭킹 업데이트를 위한 데이터 조회 중 문제가 발생했습니다.");
return;
}
Debug.Log("랭킹 업데이트를 위한 데이터 조회에 성공했습니다.");
if(bro.FlattenRows().Count > 0)
{
rowInDate = bro.FlattenRows()[0]["inDate"].ToString();
}
else
{
Debug.LogError("데이터가 존재하지 않습니다.");
}
Param param = new Param()
{
{"RankPoint", value}
};
// 해당 데이터테이블의 데이터를 갱신하고, 랭킹 데이터 정보 갱신
bro = Backend.URank.User.UpdateUserScore(RANK_UUID, "USER_DATA", rowInDate, param);
if(bro.IsSuccess())
{
Debug.Log("랭킹 등록에 성공했습니다.");
}
else
{
Debug.LogError("랭킹 등록에 실패했습니다.");
}
}
}


위 UpdateMyRankData 함수를 실행하면 데이터 테이블의 데이터와 랭킹 데이터가 갱신된다.
※ 추가 항목 사용 시

추가 항목을 사용하면 랭킹 데이터의 닉네임과 추가 항목이 자동으로 함께 갱신된다.
4. 나의 랭킹 불러오기
using BackEnd;
using LitJson;
private const string RANK_UUID = "2c3f27e0-2f8f-11ef-bb57-c3ce12361efc";
public void GetMyRank()
{
// 내 랭킹 정보 불러오기
BackendReturnObject bro = Backend.URank.User.GetMyRank(RANK_UUID);
if(bro.IsSuccess())
{
try
{
JsonData rankDataJson = bro.FlattenRows();
// 받아온 데이터의 개수가 0 -> 데이터가 없음
if (rankDataJson.Count <= 0)
{
Debug.Log("나의 랭킹 데이터가 존재하지 않습니다.");
_myRankText.text = "-";
_myRankPointText.text = "-";
_myUserNameText.text = "-";
_myWinLoseText.text = "-";
}
else
{
_rankPoint = int.Parse(rankDataJson[0]["score"].ToString());
_rank = int.Parse(rankDataJson[0]["rank"].ToString());
_userName = rankDataJson[0]["nickname"].ToString();
// 복수 데이터의 추가 항목 사용 시
//string[] extraData = rankDataJson[i]["WinLose"].ToString().Split("|");
//_win = int.Parse(extraData[0].ToString());
//_lose = int.Parse(extraData[1].ToString());
// 랭킹 데이터가 보이도록 설정
}
}
// 나의 랭킹 정보 JSON 데이터 파싱에 실패했을 때
catch (System.Exception e)
{
Debug.LogError(e);
_myRankText.text = "-";
_myRankPointText.text = "-";
_myUserNameText.text = "-";
_myWinLoseText.text = "-";
}
}
else
{
// 나의 랭킹 정보를 불러오는데 실패했을 때
_myRankText.text = "-";
_myRankPointText.text = "-";
_myUserNameText.text = "-";
_myWinLoseText.text = "-";
}
}
* 랭킹 데이터의 score, rank, nickname만 불러올 수 있고, 그 외 데이터는 추가 항목을 사용해야 한다.
* 추가 항목의 데이터를 불러올 때, "extraData"가 아닌, 지정한 데이터 이름을 사용해야 한다.

4. 유저 랭킹 불러오기
private const string RANK_UUID = "ca724250-2fb0-11ef-a678-3bbc47fe804b";
private const int MAX_RANK_LIST = 10;
public void GetRankList()
{
// 랭킹 테이블에 있는 유저의 offset ~ offset + limit 순위 랭킹 정보를 불러옴
BackendReturnObject bro = Backend.URank.User.GetRankList(RANK_UUID, MAX_RANK_LIST, 0);
if(bro.IsSuccess())
{
// JSON 데이터 파싱 성공
try
{
Debug.Log("랭킹 조회에 성공했습니다.");
JsonData rankDataJson = bro.FlattenRows();
// 받아온 데이터의 개수가 0 -> 데이터가 없음
if(rankDataJson.Count <= 0)
{
Debug.Log("랭킹 데이터가 존재하지 않습니다.");
for (int i = 0; i < MAX_RANK_LIST; i++)
{
// 랭킹 데이터 비활성화
}
}
else
{
int rankCount = rankDataJson.Count;
// 받아온 rank 데이터의 숫자만큼 데이터 출력
for (int i = 0; i < rankCount; i++)
{
_rankPoint = int.Parse(rankDataJson[i]["score"].ToString());
_rank = int.Parse(rankDataJson[i]["rank"].ToString());
_userName = rankDataJson[i]["nickname"].ToString();
// 복수 데이터의 추가 항목 사용 시
//string[] extraData = rankDataJson[i]["WinLose"].ToString().Split("|");
//_win = int.Parse(extraData[0].ToString());
//_lose = int.Parse(extraData[1].ToString());
// 랭킹 데이터 활성화
}
// rankCount가 Max값만큼 존재하지 않을 때, 나머지 랭킹
for (int i = rankCount; i < MAX_RANK_LIST; i++)
{
// 랭킹 데이터 비활성화
}
}
}
// JSON 데이터 파싱 실패
catch (System.Exception e)
{
Debug.LogError(e);
for (int i = 0; i < MAX_RANK_LIST; i++)
{
// 랭킹 데이터 비활성화
}
}
}
else
{
Debug.LogError("랭킹 조회에 실패했습니다.");
for (int i = 0; i < MAX_RANK_LIST; i++)
{
// 랭킹 데이터 비활성화
}
}
}

'유니티 > 뒤끝' 카테고리의 다른 글
뒤끝 회원가입, 로그인, 데이터 송수신 (0) | 2024.06.19 |
---|---|
뒤끝 시작하기 (0) | 2024.06.17 |