Unity ゲームの友だち

Play ゲームの友だちは、プレーヤーがクロスゲームの友だちリストを作成して維持することを許可します。この友だちリストへのアクセスをリクエストすれば、プレーヤーは友だちとゲームを楽しむことができます。友だちシステムの詳細については、友だちに関するコンセプト ページをご覧ください。

準備

これらの API を実装する最適な手順については、ベスト プラクティスのガイドラインをご覧ください。

友だちを有効にする

友だちを有効にするには、次の関数を使用します。

  • 友だちを表示する: プレーヤーの Play ゲームの友だちをゲーム内の友だちリストに追加できるように、プレーヤーの友だちリストへのアクセス権をリクエストします。

  • プレーヤーのプロフィールを表示する: プレーヤーが別のプレーヤーの Play ゲーム プロフィールを表示できるようにします。これは、プレーヤーが友だちを認識し、ゲーム内で他の Play ゲーム プレーヤーとつながるために不可欠です。ポップアップをトリガーするには、これを UI 要素に関連付ける必要があります。詳細については、友だちに関するガイドラインをご覧ください。

友だちを表示する

友だちを読み込むには、ISocial フレームワークを使用する方法と、PlayGamesPlatform を使用して直接読み込む方法の 2 つの方法があります。

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.
});