ألعاب Friends in Unity

تتيح ميزة "الأصدقاء في ألعاب Play" للاعبين إنشاء قائمة أصدقاء مشتركة بين الألعاب والحفاظ عليها. يمكنك طلب الوصول إلى قائمة الأصدقاء هذه لمساعدة اللاعبين في لعب لعبتك مع أصدقائهم. يمكنك الاطّلاع على صفحة مفهوم الأصدقاء للحصول على مزيد من التفاصيل حول نظام الأصدقاء.

قبل البدء

  • إعداد مشروعك والمكوّن الإضافي "ألعاب Google Play" لمحرّك Unity لمعرفة التفاصيل، يُرجى الاطّلاع على دليل البدء.

  • اطّلِع على إرشادات أفضل الممارسات للحصول على تعليمات حول أفضل طريقة لتنفيذ واجهات برمجة التطبيقات هذه.

اطّلِع على إرشادات أفضل الممارسات للحصول على تعليمات حول أفضل طريقة لتنفيذ واجهات برمجة التطبيقات هذه.

تفعيل ميزة "الأصدقاء"

للسماح للأصدقاء، استخدِم الدوال التالية:

  • عرض الأصدقاء: طلب الوصول إلى قائمة أصدقاء أحد اللاعبين، ما يتيح لك إضافة أصدقائه في "ألعاب Play" إلى قائمة أصدقائك داخل اللعبة

  • عرض ملف شخصي لأحد اللاعبين: يسمح هذا الإذن لأحد اللاعبين بعرض الملف الشخصي للاعب آخر على "ألعاب Play". هذا الإجراء ضروري لكي يعرف اللاعب أصدقاءه، وليتمكّن من التواصل مع اللاعبين الآخرين في "ألعاب Play" داخل لعبتك. يجب ربط هذا الإجراء بأحد عناصر واجهة المستخدم لتشغيل النافذة المنبثقة. يمكنك الاطّلاع على إرشادات الأصدقاء للحصول على التفاصيل.

عرض الأصدقاء

هناك طريقتان لتحميل الأصدقاء، إما باستخدام إطار عمل 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 عدد الإدخالات المطلوب عرضها في هذه الصفحة. يُرجى العِلم أنّه إذا كانت البيانات المخزّنة مؤقتًا متوفّرة، قد يحتوي المخزن المؤقت الذي يتم عرضه على حجم أكبر من هذا الحجم. يُضمَن أن يحتوي المخزن المؤقت على هذا العدد من الإدخالات على الأقل إذا كانت المجموعة تحتوي على عدد كافٍ من السجلات. إذا تم ضبط 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"، ويجب استدعاء الدالة باستخدام معرّف اللاعب المطلوب. إذا كان لدى اللاعب والصديق ألقاب داخل اللعبة، استخدِمها في طلب البحث لإضافة المزيد من السياق إلى واجهة مستخدم الملف الشخصي:

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