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

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

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

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

הפעלת החברים

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

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

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

הצגת החברים

יש שתי דרכים לטעון חברים, באמצעות ה-framework של ISocial או ישירות מול PlayGamesPlatform.

טעינת חברים עם ISocial framework

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