다음을 통해 공유


자습서: 플레이어 프로필 가져오기

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • 표시 이름으로 사용자 만들기
  • 플레이어 프로필 호출
  • 플레이어 생성 시간 및 마지막 로그인 시간 가져오기
  • 타이틀에 대한 플레이어 프로필 보기 제약 조건 구성
  • 로그인 작업을 통해 플레이어 프로필 가져오기

요구 사항

  • PlayFab 개발자 계정
  • 설치된 Unity 편집기 복사본. Unity Hub를 통해 개인용 Unity를 설치하거나 전문가용 Unity+를 설치하려면 Unity 다운로드를 참조하세요.

    참고 항목

    PlayFab Unity3D SDK는 Unity 편집기 버전 5.3(2015년 12월 릴리스) 이상을 지원합니다.

  • Unity 프로젝트 * 다음 중 하나일 수 있습니다.
  • PlayFab Unity3D SDK

이 자습서의 경우 타이틀의 플레이어를 만드는 방법에 대한 기본적인 지식이 필요하므로 플레이어에서 GetPlayerProfile을 수행할 수 있습니다.

프로필 제약 조건을 구성하는 곳인 게임 관리자에 익숙하지 않은 경우 게임 관리자 빠른 시작을 읽어보는 것도 좋습니다.

이 문서의 C# 샘플은 Unity SDK용으로 작성되었습니다. Unity SDK는 이벤트 기반 모델을 사용하여 비동기 작업을 처리합니다. 표준 C# 또는 Xamarin C# SDK를 사용하여 샘플 코드를 실행하려면 비동기 작업 모델을 사용하도록 코드를 수정해야 합니다. 수정해야 하는 메서드에는 서명의 메서드 이름에 Async가 추가됩니다. 예를 들어 Unity SDK의 SetObject는 표준 SDK C#의 SetObjectAsync가 됩니다. 자세한 내용은 async 및 await를 사용한 비동기 프로그래밍을 참조하세요.

표시 이름으로 사용자 만들기

첫 번째 단계는 플레이어를 만들고 표시 이름을 해당 사용자에게 추가하는 것입니다. 이 예제에서는 표시 이름 UnicornTossMaster를 가진 새 사용자를 만듭니다.

void CreatePlayerAndUpdateDisplayName() {
    PlayFabClientAPI.LoginWithCustomID( new LoginWithCustomIDRequest {
        CustomId = "PlayFabGetPlayerProfileCustomId",
        CreateAccount = true
    }, result => {
        Debug.Log("Successfully logged in a player with PlayFabId: " + result.PlayFabId);
        UpdateDisplayName();
    }, error => Debug.LogError(error.GenerateErrorReport()));
}

void UpdateDisplayName() {
    PlayFabClientAPI.UpdateUserTitleDisplayName( new UpdateUserTitleDisplayNameRequest {
        DisplayName = "UnicornTossMaster"
    }, result => {
        Debug.Log("The player's display name is now: " + result.DisplayName);
    }, error => Debug.LogError(error.GenerateErrorReport()));
}

콘솔 출력에는 다음 내용이 표시되어야 합니다.

Successfully logged in a player with PlayFabId: SOME_PLAYFAB_ID
The player's display name is now: UnicornTossMaster

플레이어 프로필 호출

다음 단계는 플레이어의 기본 프로필을 만드는 것입니다.

다음 예제에서는 기본 GetPlayerProfile 호출을 사용합니다.

void GetPlayerProfile(string playFabId) {
    PlayFabClientAPI.GetPlayerProfile( new GetPlayerProfileRequest() {
        PlayFabId = playFabId,
        ProfileConstraints = new PlayerProfileViewConstraints() {
            ShowDisplayName = true
        }
    },
    result => Debug.Log("The player's DisplayName profile data is: " + result.PlayerProfile.DisplayName),
    error => Debug.LogError(error.GenerateErrorReport()));
}

응답에는 플레이어의 표시 이름 UnicornTossMaster가 포함된 PlayerProfileModel 개체가 포함됩니다.

플레이어 생성 시간 및 마지막 로그인 시간 가져오기

PlayerProfileModel 개체에 플레이어에 대한 상당한 양의 데이터가 있습니다. 이전 단계에서 GetPlayerProfile이 발행되었고 수신한 응답만 표시 이름 정보를 포함했습니다.

다음 단계는 플레이어의 훨씬 ‘더 많은’ 프로필 데이터를 가져오는 것입니다. 이렇게 하려면 PlayerProfileViewConstraints 요청 매개 변수에 추가 필드로 GetPlayerProfile을 호출합니다.

다음 C# 예제에서는 2단계의 GetPlayerProfile 메서드를 수정하고 GetPlayerProfile을 호출하여 ProfileConstraints에서 해당 플래그를 설정하여 CreatedLastLogin 필드를 요청합니다.

참고 항목

이렇게 하면 이 단계에서는 실패한 호출이 됩니다!!!

void CreatePlayerAndUpdateDisplayName(string playFabId) {
    PlayFabClientAPI.GetPlayerProfile( new GetPlayerProfileRequest() {
        PlayFabId = playFabId,
        ProfileConstraints = new PlayerProfileViewConstraints {
            ShowDisplayName = true,
            ShowCreated = true,
            ShowLastLogin = true
        }
    },
    result => Debug.Log("The player's profile Created date is: " + result.PlayerProfile.Created),
    error => Debug.LogError(error.GenerateErrorReport()));
}

이제 이 샘플 코드를 실행하면 오류 Error Code 1303. RequestViewConstraintParamsNotAllowed 및 타이틀에서 현재 설정한 상수의 JSON 출력이 포함된 Invalid view constraints가 있음을 나타내는 오류 메시지가 반환됩니다.

타이틀의 프로필 제약 조건 설정에서 CreatedLastLogin을(를) 표시하는 기능이 아직 구성되지 않았기 때문에 오류가 발생했습니다.

타이틀에 대한 플레이어 프로필 보기 제약 조건 구성

GetPlayerProfile API를 호출할 때 더 많은 데이터를 가져오려면 데이터의 제약 조건을 사용 가능하도록 구성해야 합니다. 이러한 설정은 게임 관리자에서 타이틀 설정에 있습니다.

기본적으로 ALLOW CLIENT ACCESS TO PROFILE PROPERTIES:에서만 표시 이름을 사용할 수 있어서 표시 이름 값을 검색할 수 있었습니다.

타이틀의 추가 제약 조건을 구성하려면 다음과 같이 합니다.

  • 게임 관리자에서 타이틀을 선택합니다.
  • 왼쪽 위 모서리에서 기어 아이콘을 선택한 다음 Title Settings(타이틀 설정)를 선택합니다.
  • Client Profile Options(클라이언트 프로필 옵션) 탭을 선택합니다.
  • ProfileConstraints에서 CreatedLastLogin을 모두 사용하도록 설정하려면 생성 날짜마지막 로그인 시간을 선택한 후 SAVE CLIENT PROFILE OPTIONS(클라이언트 프로필 옵션 저장) 단추를 선택합니다.

PlayFab 설정 * 클라이언트 프로필 옵션 * 프로필 속성에 대한 클라이언트 액세스 허용

이제 CreatePlayerAndUpdateDisplayName을 호출하면 사용자의 생성 시간, 마지막 로그인, 표시 이름 UnicornTossMaster에 대한 데이터가 포함된 PlayerProfileModel 개체가 반환됩니다.

로그인 작업을 통해 플레이어 프로필 가져오기

대부분의 경우 플레이어가 로그인하자마자 플레이어 프로필 데이터를 검색하려고 합니다. PlayFab API를 사용하면 로그인 호출과 플레이어 프로필을 검색하는 호출을 단일 호출로 결합할 수 있습니다.

다음 예제에서는 로그인 요청을 통해 프로필 정보를 얻는 방법을 보여 주며 LoginWithCustomId를 예제로 사용합니다.

참고 항목

이는 ‘모든’ 로그인 메커니즘에서 작동합니다.

void CreatePlayerAndUpdateDisplayName(string customId) {
    PlayFabClientAPI.LoginWithCustomID( new LoginWithCustomIDRequest() {
        CustomId = customId,
        // Define info request parameters
        InfoRequestParameters = new GetPlayerCombinedInfoRequestParams() {
            // And make sure PlayerProfile is included
            GetPlayerProfile = true,
            // Define rules for PlayerProfile request
            ProfileConstraints = new PlayerProfileViewConstraints() {
                // And make sure that both AvatarUrl and LastLogin are included.
                ShowAvatarUrl = true,
                ShowLastLogin = true,
            }
        }
    },
    result =>
    {
        // Extract the data you have requested
        var avatarUrl = result.InfoResultPayload.PlayerProfile.AvatarUrl;
    },
    error => Debug.LogError(error.GenerateErrorReport()));
}