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

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

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

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

  • FriendsListVisibilityStatus.RequestRequired ระบุว่าคุณต้องขอ ความยินยอม

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

  • FriendsListVisibilityStatus.Unknown ไม่ควรเกิดขึ้นตามปกติ คุณสามารถกำหนด forceReload เป็น true เพื่อรีเฟรชข้อมูล

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

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

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

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