Play ゲームの友だちは、プレーヤーがクロスゲームの友だちリストを作成して維持することを許可します。この友だちリストへのアクセスをリクエストすれば、プレーヤーは友だちとゲームを楽しむことができます。友だちシステムの詳細については、友だちに関するコンセプト ページをご覧ください。
準備
プロジェクトと Unity 用の Google Play Games プラグインを設定します。詳細については、スタートガイドをご覧ください。
これらの API を実装する最適な手順については、ベスト プラクティスのガイドラインをご覧ください。
これらの 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 で友だちを読み込む
友だちを読み込むもう一つの方法は、LoadFriends
と LoadMoreFriends
を使用することです。
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
パラメータは、このページに対してリクエストするエントリ数を表します。キャッシュに保存されたデータがすでに存在する場合は、返されるバッファがこのサイズを超える可能性があります。コレクションに十分なレコードが含まれている場合は、少なくともこの数のエントリをバッファに格納することが保証されています。forceReload
が true
に設定されている場合、この呼び出しはローカルにキャッシュ保存されたデータをすべてクリアし、サーバーからの最新データの取得を試みます。これは通常、ユーザーが開始する更新などの操作に使用されます。通常は、データのキャッシュ保存による利点を活用するために、これを 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.
});