משחקי 'חברים' ב-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.
});