Play 遊戲的好友可讓玩家建立並維護一個橫跨遊戲的好友名單。您可以要求存取這份好友名單,讓玩家與朋友一起玩遊戲。如要進一步瞭解好友系統,請參閱好友概念頁面。
事前準備
如要瞭解實作這些 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 載入好友
您也可以使用 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) => {});
檢視玩家個人資料
如果想新增或移除好友,請使用 ShowCompareProfile 函式。這個函式會觸發底部功能表對話方塊,並顯示該名使用者的 Play 遊戲個人資料,以及呼叫含有要求玩家 ID 的函式。若玩家和好友都有遊戲內暱稱,請在呼叫中使用這些暱稱,將更多背景資訊加入個人資料 UI:
PlayGamesPlatform.Instance.ShowCompareProfileWithAlternativeNameHintsUI(
mFirstFriendId, /* otherPlayerInGameName= */ null, /* currentPlayerInGameName= */ null,
(result) => {
// Profile comparison view has closed.
});