Tính năng bạn bè trong các trò chơi Unity

Tính năng bạn bè trong Play Games cho phép người chơi tạo và duy trì danh sách bạn bè trên nhiều trò chơi. Bạn có thể yêu cầu quyền truy cập vào danh sách bạn bè này để giúp người chơi chơi trò chơi của bạn với bạn bè của họ. Vui lòng xem trang Khái niệm về bạn bè để biết thêm thông tin chi tiết về hệ thống bạn bè.

Trước khi bắt đầu

Vui lòng xem nguyên tắc về các phương pháp hay nhất để được hướng dẫn cách triển khai hiệu quả nhất các API này.

Cho phép bạn bè

Để cho phép bạn bè, hãy sử dụng các chức năng sau:

  • Xem bạn bè: Yêu cầu quyền truy cập vào danh sách bạn bè của người chơi, từ đó thêm bạn bè chơi cùng của họ vào danh sách bạn bè trong trò chơi của bạn.

  • Xem hồ sơ người chơi: Cho phép người chơi xem hồ sơ của người chơi khác trong Play Games. Việc này cần thiết để người chơi biết được bạn bè của họ là ai, đồng thời có thể kết nối với những người chơi Play Games khác trong trò chơi của bạn. Bạn cần liên kết với một phần tử giao diện người dùng để kích hoạt cửa sổ bật lên. Vui lòng xem nguyên tắc về bạn bè để biết thêm thông tin chi tiết.

Xem thông tin bạn bè

Có hai cách để tải bạn bè là sử dụng khung ISocial hoặc trực tiếp với PlayGamesPlatform.

Tải bạn bè bằng khung 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");
    }

Tuy nhiên, lệnh gọi này sẽ không thành công nếu người chơi hiện tại chưa cấp quyền cho trò chơi để truy cập vào thông tin này. Sử dụng GetLastLoadFriendsStatus để kiểm tra xem liệu LoadFriends có bị lỗi do thiếu sự đồng ý hay không.

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

Một trò chơi có thể yêu cầu người chơi hiện tại chia sẻ danh sách bạn bè bằng cách gọi 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.
    }
});

Hàm này sẽ hiển thị giao diện người dùng chia sẻ bạn bè phù hợp trên nền tảng cụ thể. Giao diện người dùng này sẽ hỏi người chơi xem liệu họ có muốn chia sẻ bạn bè của mình với trò chơi hay không.

Tải bạn bè bằng PlayGamesPlatform

Ngoài ra, còn một cách khác để tải bạn bè là sử dụng 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.
});

Tham số pageSize đại diện cho số lượng mục nhập cần yêu cầu cho trang này. Vui lòng lưu ý nếu dữ liệu lưu vào bộ nhớ đệm đã tồn tại sẵn, thì bộ đệm trả về phải chứa nhiều hơn dung lượng này. Dung lượng bộ đệm đảm bảo chứa được ít nhất là các mục này nếu bộ sưu tập đã hết chỗ chứa bản ghi. Nếu bạn đặt forceReload thành true, lệnh gọi này sẽ xóa mọi dữ liệu đã lưu vào bộ nhớ đệm trên máy và cố gắng tìm nạp dữ liệu mới nhất từ máy chủ. Phương thức này thường được dùng cho các thao tác như làm mới do người dùng thực hiện. Thông thường, bạn nên đặt giá trị này thành false để đạt được lợi thế của bộ nhớ đệm dữ liệu.

Nếu lệnh gọi lại trả về LoadFriendsStatus.LoadMore, thì sẽ có nhiều bạn bè hơn để tải. LoadFriendsStatus.ResolutionRequired cho biết người dùng chưa chia sẻ danh sách bạn bè, và bạn có thể gọi trực tiếp phương thức PlayGamesPlatform.Instance.AskForLoadFriendsResolution.

Xác định chế độ hiển thị danh sách bạn bè

Sử dụng PlayGamesPlatform.Instance.GetFriendsListVisibility để kiểm tra xem liệu người dùng có chia sẻ danh sách bạn bè với trò chơi hay không. Các trạng thái trả lại có thể xảy ra là:

  • FriendsListVisibilityStatus.RequestRequired cho biết bạn phải yêu cầu sự đồng ý.

  • FriendsListVisibilityStatus.Visible cho biết thao tác tải danh sách bạn bè sẽ thành công.

  • FriendsListVisibilityStatus.Unknown thường không xảy ra. Bạn có thể đặt forceReload thành giá trị true (đúng) để làm mới dữ liệu.

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

Xem hồ sơ người chơi

Để thêm hoặc xóa một người chơi trong danh sách bạn bè, hãy sử dụng hàm hiển thị và so sánh hồ sơ. Hàm này kích hoạt một hộp thoại ở bảng dưới cùng hiển thị hồ sơ Play Games của người dùng; gọi hàm với mã người chơi của người chơi được yêu cầu. Nếu người chơi và bạn bè đều có biệt hiệu trong trò chơi, hãy sử dụng biệt hiệu đó trong lệnh gọi để thêm ngữ cảnh vào giao diện người dùng của hồ sơ:

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