เกม Friends ใน Unity

บริการ "เพื่อน" ของ Play Games ช่วยให้ผู้เล่นสร้างและดูแลรายชื่อเพื่อนในเกมต่างๆ ได้ คุณขอสิทธิ์เข้าถึงรายชื่อเพื่อนนี้ได้เพื่อช่วยให้ผู้เล่นเล่นเกมของคุณกับเพื่อนๆ ดูรายละเอียดเพิ่มเติมเกี่ยวกับระบบเพื่อนได้ที่ หน้าแนวคิดเกี่ยวกับเพื่อน

ก่อนจะเริ่มต้น

ดูวิธีการใช้งาน API เหล่านี้ในวิธีที่ดีที่สุดได้ที่หลักเกณฑ์แนวทางปฏิบัติแนะนำ

เปิดใช้เพื่อน

หากต้องการเปิดใช้ฟีเจอร์เพื่อน ให้ใช้ฟังก์ชันต่อไปนี้

  • ดูเพื่อน: ขอสิทธิ์เข้าถึงรายชื่อเพื่อนของผู้เล่น เพื่อให้คุณเพิ่มเพื่อนใน Play Games ลงในรายชื่อเพื่อนในเกมได้

  • ดูโปรไฟล์ผู้เล่น อนุญาตให้ผู้เล่นดูโปรไฟล์ Play Games ของผู้เล่นคนอื่น ซึ่งเป็นสิ่งสำคัญเพื่อให้ผู้เล่นทราบว่าใครเป็นเพื่อนของตน และเชื่อมต่อกับผู้เล่น Play Games คนอื่นๆ ในเกมของคุณได้ โดยจะต้องเชื่อมโยงกับองค์ประกอบ UI เพื่อ ทริกเกอร์ป๊อปอัป ดูรายละเอียดได้ที่หลักเกณฑ์สำหรับเพื่อน

ดูเพื่อน

คุณโหลดเพื่อนได้ 2 วิธี ไม่ว่าจะใช้เฟรมเวิร์ก 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 param แสดงจำนวนรายการที่จะขอสำหรับหน้านี้ โปรดทราบว่าหากมีข้อมูลที่แคชอยู่แล้ว บัฟเฟอร์ที่ส่งคืนอาจมีขนาดใหญ่กว่านี้ ระบบรับประกันว่าบัฟเฟอร์จะมีรายการอย่างน้อยเท่านี้ หากคอลเล็กชันมีระเบียนเพียงพอ หากตั้งค่า forceReload เป็น true การเรียกนี้จะล้างข้อมูลที่แคชไว้ในเครื่องและพยายามดึงข้อมูลล่าสุด จากเซิร์ฟเวอร์ โดยปกติแล้วจะใช้กับการดำเนินการต่างๆ เช่น การรีเฟรชที่ผู้ใช้เริ่ม โดยปกติแล้วควรตั้งค่านี้เป็น false เพื่อให้ได้รับ ประโยชน์จากการแคชข้อมูล

หากการเรียกกลับแสดงผล LoadFriendsStatus.LoadMore แสดงว่ามีเพื่อนที่ต้องโหลดเพิ่มเติม LoadFriendsStatus.ResolutionRequired แสดงว่าผู้ใช้ ไม่ได้แชร์รายชื่อเพื่อนและคุณโทรหา PlayGamesPlatform.Instance.AskForLoadFriendsResolution ได้โดยตรง

กำหนดระดับการเข้าถึงรายชื่อเพื่อน

ใช้ PlayGamesPlatform.Instance.GetFriendsListVisibility เพื่อตรวจสอบว่าผู้ใช้ แชร์รายชื่อเพื่อนกับเกมหรือไม่ สถานะการคืนสินค้าที่เป็นไปได้มีดังนี้

  • FriendsListVisibilityStatus.RequestRequired แสดงว่าคุณต้องขอ ความยินยอม

  • FriendsListVisibilityStatus.Visible บ่งบอกว่าการโหลดรายชื่อเพื่อน ควรสำเร็จ

  • FriendsListVisibilityStatus.Unknown โดยทั่วไปไม่ควรเกิดขึ้น คุณตั้งค่า forceReloadเป็น "จริง" เพื่อรีเฟรชข้อมูลได้

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

ดูโปรไฟล์ผู้เล่น

หากต้องการเพิ่มหรือนำผู้เล่นออกจากการเป็นเพื่อน ให้ใช้ฟังก์ชันแสดงและเปรียบเทียบโปรไฟล์ ฟังก์ชันนี้จะเรียกใช้กล่องโต้ตอบชีตด้านล่างที่แสดงโปรไฟล์ Play Games ของผู้ใช้ เรียกใช้ฟังก์ชันด้วยรหัสผู้เล่นของผู้เล่นที่ขอ หากผู้เล่นและเพื่อนมีชื่อเล่นในเกม ให้ใช้ชื่อเล่นดังกล่าวในการโทรเพื่อ เพิ่มบริบทใน UI โปรไฟล์

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