https://learn.microsoft.com/ko-kr/gaming/playfab/features/data/playerdata/using-player-statistics
통계를 사용하기 위해서 타이틀 톱니 아이콘 - 타이틀 설정 - API 기능 - 클라이언트가 플레이어의 통계를 게시할 수 있도록 허용해야한다
1. Statistics(통계)를 사용하여 int 값 저장
public void SetStat()
{
PlayFabClientAPI.UpdatePlayerStatistics(new UpdatePlayerStatisticsRequest
{
Statistics = new List<StatisticUpdate>
{
new StatisticUpdate {StatisticName = "first", Value = int.Parse(first.text)},
new StatisticUpdate {StatisticName = "second", Value = int.Parse(second.text)},
new StatisticUpdate {StatisticName = "third", Value = int.Parse(third.text)},
}
},
(result) => { log.text = "success"; print("저장"); },
(error) => { log.text = "fail"; print("실패"); });
}
public void GetStat()
{
PlayFabClientAPI.GetPlayerStatistics(new GetPlayerStatisticsRequest(),
(result) =>
{
log.text = "";
foreach (var eachStat in result.Statistics)
{
log.text += eachStat.StatisticName + " : " + eachStat.Value + "\n";
}
},
(error) => { log.text = "값 불러오기 실패"; });
}
로그인 후에 first second third에 각각 10 20 30을 누르고 save 버튼을 누르면 success 성공이 뜬다.
이후 Load버튼을 누르면 저장되어 있던 값을 가져올 수 있다.
플레이팹에서 실제로 저장이 된 것을 볼 수 있다.
2. Data (플레이어 데이터)를 사용하여 Dic<string, string> 값 저장
public void OnRegisterBtn()
{
var request = new RegisterPlayFabUserRequest { Email = emailIput.text, Password = passwordInput.text, Username = nameInput.text };
PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterSuccess, OnRegisterFailure);
}
private void OnLoginSuccess(LoginResult result)
{
print("로그인 성공");
myID = result.PlayFabId;
}
우선 Statistic 코드에서 OnLoginSuccess 부분에 myID에 PlayFabId를 저장한다.
이러면 성공적으로 로그인이 될 때, 자신의 플레이팹 아이디를 가져온다.
public void SetData()
{
var request = new UpdateUserDataRequest() { Data = new Dictionary<string, string>() { {"A", "AAA"}, {"B", "BBB"} } };
PlayFabClientAPI.UpdateUserData(request, (result) => print("데이터 저장 성공"), (error) => print("데이터 저장 실패"));
}
public void GetData()
{
// 누구의 데이터를 가져올 것인지 특정하기 위해 PlayfabID를 request에 넣어줘야 한다.
var request = new GetUserDataRequest() { PlayFabId = myID };
PlayFabClientAPI.GetUserData(request, (result) => { foreach (var eachData in result.Data) log.text += eachData.Key + " : " + eachData.Value.Value + "\n"; }, (error) => print("데이터 불러오기 실패"));
}
Save Data 버튼을 누르면 SetData 함수가 실행되게 했다. 실제로 PlayFab에 저장이 되는 것을 확인할 수 있었다.
Load Data 버튼을 누르면 GetData 함수가 실행되게 했는데 이것 역시 정상적으로 작동한다.
특정 데이터 가져오기
특정 데이터만 가져오고 싶을 때는 switch나 if문을 사용해 result.Data[가져오고 싶은 key]를 사용하면 된다.
public void GetData(string key = "")
{
// 누구의 데이터를 가져올 것인지 특정하기 위해 PlayfabID를 request에 넣어줘야 한다.
var request = new GetUserDataRequest() { PlayFabId = myID };
log.text = "";
PlayFabClientAPI.GetUserData(request, (result) =>
{
switch (key)
{
case "A": log.text = "A" + " : " + result.Data["A"].Value; break;
case "B": log.text = "B" + " : " + result.Data["B"].Value; break;
default: foreach (var eachData in result.Data) log.text += eachData.Key + " : " + eachData.Value.Value + "\n"; break;
}
},
(error) => print("데이터 불러오기 실패"));
}
특정 데이터 가져오기 결과
'Unity' 카테고리의 다른 글
UI Element (0) | 2022.11.27 |
---|---|
Playfab - 4 가상화폐, 상점, 아이템, 인벤토리 (0) | 2022.10.31 |
Playfab - 2 playfab 로그인 회원가입 기능 (0) | 2022.10.23 |
Playfab - 1 임포트 및 설정 (0) | 2022.10.21 |
Vector의 기본 (0) | 2022.05.05 |