משחקי 'חברים' ב-Unity

שירות Play Games Friends מאפשר לשחקנים ליצור ולנהל רשימת חברים במשחקים שונים. אפשר לבקש גישה לרשימת החברים הזו כדי לעזור לשחקנים לשחק במשחק שלך עם החברים שלהם. בדף הקונספט של החברים מוסבר בהרחבה על מערכת החברים.

לפני שמתחילים

בהנחיות לשיטות מומלצות מוסבר איך מטמיעים בצורה הטובה ביותר את ממשקי ה-API האלה.

הפעלת התכונה 'חברים'

כדי להפעיל את החברים, יש להשתמש בפונקציות הבאות:

  • הצגת החברים: אפשר לבקש גישה לרשימת החברים של שחקן כדי להוסיף את החברים שלו במשחקים לרשימת החברים שלכם במשחק.

  • הצגת פרופיל שחקן: שחקן יכול להציג את הפרופיל של שחקן אחר ב-Play Games. הפעולה הזו חיונית כדי שהשחקנים יידעו מי החברים שלהם ויוכלו להתחבר לשחקנים אחרים ב-Play Games במשחק. כדי להפעיל את החלון הקופץ, צריך לקשר אותו לרכיב בממשק המשתמש. פרטים נוספים זמינים בהנחיות בנושא חברים.

הצגת החברים

יש שתי דרכים לטעון חברים: באמצעות המסגרת 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.
    }
});

הפונקציה הזו תציג את ממשק המשתמש המתאים לשיתוף חברים בפלטפורמה הספציפית. בממשק המשתמש הזה, השחקן נשאל אם הוא רוצה לשתף את רשימת החברים שלו עם המשחק.

טעינת חברים באמצעות 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 מייצג את מספר הרשומות שצריך לבקש לדף הזה. שימו לב: אם כבר יש נתונים ששמורים במטמון, יכול להיות שהמאגר המוחזר יכיל יותר מ-1000 פריטים. מובטח שהמאגר הזמני יכלול לפחות את המספר הזה של רשומות, אם האוסף מכיל מספיק רשומות. אם הערך של 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 Games. צריך להפעיל את הפונקציה עם מזהה השחקן המבוקש. אם לשחקן ולחבר יש כינויים במשחק, תוכלו להשתמש בהם בשיחה כדי להוסיף הקשר נוסף לממשק המשתמש של הפרופיל:

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