Unity에서 PlayFab의 제목 데이터를 가져와서 표시
※PlayFab이란? 라는 분은 여기 를 봐 주세요.
머리
1. 타이틀 데이터란?
タイトルデータ
는 게임의 설정 데이터입니다.PlayFab에는 게임 설정 데이터를 저장할 수 있는 KVS 기능이 있습니다.
タイトルデータ
라는 이름이 조금 알기 어려운 것 같지만 PlayFab은 하나의 게임을 タイトル
2. 타이틀 데이터의 주의점
PlayFab의 타이틀 데이터는 값을 설정한 후 반영될 때까지 최대 15분의 시간 지연이 있습니다.
따라서 타이틀 데이터는 동적으로 업데이트되는 데이터 관리에 적합하지 않습니다.
어떤 데이터를 타이틀 데이터로 저장할지 충분히 고려해야 합니다.
그건 그렇고, 나는 개인 개발 게임의 마스터 데이터를 관리하는 데 사용하고 있습니다.
마스터 데이터에 뭔가 문제가 있었을 경우에 데이터의 수정 결과가 최대 15분간 반영되지 않을 가능성이 있습니다만, 개인개발의 게임이며 허용할 수 있다고 판단했습니다.
제목 데이터 저장
이번에는 GameManager에서 저장합니다.
왼쪽 메뉴의 내용을 열면 제목 데이터가 표시됩니다.
제목 데이터에는 두 가지 유형이 있습니다.
- 타이틀 데이터(Client에서 읽을 수 있는 데이터)
- 제목 내부 데이터(서버측에서만 읽을 수 있는 데이터)
데이터의 특성을 고려하여 적절한 방법을 사용하십시오.
값은 JSON으로 입력할 수 있습니다.
값을 입력하면 하단 버튼으로 타이틀 데이터를 저장합니다.
샘플 GachaMaster 값의 복사본은 여기에서 확인하십시오.
[
{
"ID": 1,
"Name": "レアキャラ1",
"Rank": 2,
"Rate": 16
},
{
"ID": 2,
"Name": "レアキャラ2",
"Rank": 2,
"Rate": 16
},
{
"ID": 3,
"Name": "レアキャラ3",
"Rank": 2,
"Rate": 16
},
{
"ID": 4,
"Name": "レアキャラ4",
"Rank": 2,
"Rate": 16
}
]
Unity에서 제목 데이터 검색 및 표시
1. 아래 준비(Unity에서 PlayFab SDK 사용 준비 및 PlayFab에 로그인 구현)
@ume67026265 님이 PlayFab 계정을 만드는 방법과 Unity에 SDK를 도입하는 기사를 작성했습니다.
익숙하지 않은 분은 이쪽을 참고로 진행하면 원활하게 준비할 수 있다고 생각합니다.
PlayFab 시작했습니다. ※계정을 만드는 방법
PlayFab에서 Unity를 움직여보세요 - 그 1아래 준비편- ※ Unity에 PlayFab SDK를 도입하는 순서
PlayFab에서 Unity를 움직여보세요 - 2 API 호출 만들기 - ※ 사용자를 PlayFab에 로그인하는 절차
2. Unity에서 타이틀 데이터를 검색하고 표시
2.1 시리얼라이저의 준비
PlayFab과 직접 관련이 있는 이야기는 아니지만, 마스터 데이터 등을 JSON으로 관리하는 경우 Unity 표준 시리얼라이저(JsonUtility)에서는 잘 처리할 수 없는 경우가 많습니다.
그 경우는 Utf8Json 등을 이용합시다.
Utf8Json을 사용할 준비는 이런 느낌입니다.
1. 릴리즈 에서 최신 unipackage를 떨어뜨려 가져오기
2. ProjectSettings 에서 다음과 같이 설정
2.2 PlayFabLogin 클래스 편집
아래 준비로 만든 PlayFabLogin이라는 Script를 편집합니다.
PlayFab에서 TitleData를 가져와 표시하는 메서드와 GachaMaster 클래스를 PlayFabLogin 클래스에 추가합니다.
public static void GetTitleData()
{
var request = new GetTitleDataRequest();
PlayFabClientAPI.GetTitleData(request, OnSuccess, OnError);
void OnSuccess(GetTitleDataResult result)
{
Debug.Log("GetTitleData: Success!");
var loginMessage = result.Data["LoginMessage"];
Debug.Log(loginMessage);
var gachaMaster = Utf8Json.JsonSerializer.Deserialize<GachaMaster[]>(result.Data["GachaMaster"]);
foreach (var master in gachaMaster)
{
Debug.Log(master.Name);
}
}
void OnError(PlayFabError error)
{
Debug.Log("GetTitleData: Fail...");
Debug.Log(error.GenerateErrorReport());
}
}
public class GachaMaster
{
public int ID { get; set; }
public string Name { get; set; }
public int Rank { get; set; }
public int Rate { get; set; }
}
2.3 OnLoginSuccess 메서드에서 GetTitleData를 호출하는 처리 추가
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("Congratulations, you made your first successful API call!");
GetTitleData(); // ここを追加
}
이것을 Unity에서 재생해 봅시다.
취득한 타이틀 데이터를 표시할 수 있었습니다.
참고/관련
Reference
이 문제에 관하여(Unity에서 PlayFab의 제목 데이터를 가져와서 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_y_minami/items/3396f832d868d52bbbaf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)