Unity 게임 친구

Play 게임즈 친구에서는 플레이어가 게임 간 친구 목록을 만들고 관리할 수 있습니다. 플레이어가 친구와 함께 게임을 할 수 있도록 개발자는 이 친구 목록에 대한 액세스를 요청할 수 있습니다. 친구 시스템에 관한 자세한 내용은 친구 개념 페이지를 참고하세요.

시작하기 전에

  • Unity 프로젝트와 Unity용 Google Play 게임즈 플러그인을 설정합니다. 자세한 내용은 시작 가이드를 참고하세요.

  • 이러한 API를 가장 잘 구현하는 방법에 관한 안내는 권장사항 가이드라인을 참고하세요.

이러한 API를 가장 잘 구현하는 방법에 관한 안내는 권장사항 가이드라인을 참고하세요.

친구 설정

친구를 설정하려면 다음 기능을 사용합니다.

  • 친구 보기: 인게임 친구 목록에 Play 게임즈 친구를 추가할 수 있도록 플레이어의 친구 목록에 대한 액세스 권한을 요청합니다.

  • 플레이어 프로필 보기: 플레이어가 다른 플레이어의 Play 게임즈 프로필을 볼 수 있습니다. 이는 필수적인 요소로, 플레이어가 자신의 친구가 누구인지 알고 게임 내에 있는 다른 Play 게임즈 플레이어에 연결할 수 있기 때문입니다. 팝업을 트리거하려면 UI 요소에 연결되어야 합니다. 자세한 내용은 친구 가이드라인을 참고하세요.

친구 보기

친구를 로드하는 방법에는 ISocial 프레임워크를 사용하거나 PlayGamesPlatform을 직접 사용하는 두 가지 방법이 있습니다.

ISocial 프레임워크로 친구 로드

Social.localUser.LoadFriends((success) =>  {
    Debug.Log("Friends loaded OK: " + ok));
    foreach(IUserProfile p in Social.localUser.friends) {
         Debug.Log(p.userName + " is a friend");
    }

그러나 현재 플레이어가 관련 정보에 액세스할 권한을 아직 게임에 부여하지 않았다면 이 호출은 실패하게 됩니다. GetLastLoadFriendsStatus를 사용하여, 동의가 없어 LoadFriends가 실패했는지 확인합니다.

 PlayGamesPlatform.Instance.GetLastLoadFriendsStatus((status) => {
    // Check for consent
    if (status == LoadFriendsStatus.ResolutionRequired) {
        // Ask for resolution.
    }
});

게임에서 AskForLoadFriendsResolution을 호출하여 현재 플레이어에게 친구 목록을 공유하도록 요청할 수 있습니다.

PlayGamesPlatform.Instance.AskForLoadFriendsResolution((result) => {
    if (result == UIStatus.Valid) {
        // User agreed to share friends with the game. Reload friends.
    } else {
        // User doesn’t agree to share the friends list.
    }
});

이 함수를 사용하면 적절한 플랫폼별 친구 공유 UI가 표시됩니다. 이 UI에서 플레이어에게 친구와 게임을 공유할지 묻는 메시지가 표시됩니다.

PlayGamesPlatform으로 친구 로드

친구를 로드하는 또 다른 방법은 LoadFriendsLoadMoreFriends를 사용하는 것입니다.

PlayGamesPlatform.Instance.LoadFriends(pageSize, forceReload, (status) => {
    // Check if the call is successful and if there are more friends to load.
});

PlayGamesPlatform.Instance.LoadMoreFriends(pageSize, (status) => {
    // Check if there are more friends to load.
});

pageSize 매개변수는 이 페이지에 요청할 항목 수를 나타냅니다. 캐시된 데이터가 이미 있다면 반환된 버퍼는 그 크기를 초과하여 더 많은 것을 포함할 수 있습니다. 컬렉션에 충분한 레코드가 포함된 경우 버퍼는 최소한 이 많은 항목을 반드시 포함하게 됩니다. forceReloadtrue로 설정되면 이 호출은 로컬에 캐시된 데이터를 모두 삭제하고 서버에서 최신 데이터를 가져오려고 시도합니다. 일반적으로 이 동작은 사용자가 시작한 새로고침과 같은 작업에 사용됩니다. 보통 데이터 캐싱의 이점을 얻으려면 false로 설정되어야 합니다.

콜백이 LoadFriendsStatus.LoadMore를 반환하면 로드할 친구가 더 있는 것입니다. LoadFriendsStatus.ResolutionRequired는 사용자가 친구 목록을 공유하지 않았으며 PlayGamesPlatform.Instance.AskForLoadFriendsResolution을 직접 호출할 수 있음을 나타냅니다.

친구 목록 공개 상태 확인

PlayGamesPlatform.Instance.GetFriendsListVisibility를 사용하여 사용자가 친구 목록을 게임과 공유했는지 확인합니다. 가능한 반환 상태는 다음과 같습니다.

  • FriendsListVisibilityStatus.RequestRequired는 동의를 구해야 한다는 의미입니다.

  • FriendsListVisibilityStatus.Visible은 친구 목록 로드에 성공해야 함을 나타냅니다.

  • FriendsListVisibilityStatus.Unknown은 일반적으로 발생해서는 안 됩니다. forceReload를 true로 설정하여 데이터를 새로 고칠 수 있습니다.

PlayGamesPlatform.Instance.GetFriendsListVisibility(forceReload, (friendsListVisibilityStatus) => {});

플레이어 프로필 보기

플레이어를 친구로 추가하거나 삭제하려면 프로필 표시 및 프로필 비교 함수를 사용합니다. 이 함수는 사용자의 Play 게임즈 프로필을 표시하는 하단 시트 대화상자를 트리거합니다. 요청된 플레이어의 플레이어 ID를 사용하여 함수를 호출합니다. 플레이어와 친구에게 인게임 닉네임이 있으면 호출 시 이를 사용하여 프로필 UI에 컨텍스트를 추가합니다.

PlayGamesPlatform.Instance.ShowCompareProfileWithAlternativeNameHintsUI(
    mFirstFriendId, /* otherPlayerInGameName= */ null, /* currentPlayerInGameName= */ null,
    (result) => {
        // Profile comparison view has closed.
});