ترقية حزمة تطوير البرامج (SDK) للإدخال في Unity إلى الإصدار 1.1

يشرح هذا الدليل كيفية ترقية لعبتك من الإصدار 1.0 إلى الإصدار 1.1 من حزمة تطوير البرامج (SDK) للإدخال في Unity. انقر هنا للحصول على تعليمات Java وKotlin.

ملاحظات الإصدار

يتيح برنامج "ألعاب Google Play على الكمبيوتر" إعادة تخصيص عناصر التحكّم في لوحة المفاتيح على روابط المفاتيح التي توفرها لعبتك باستخدام حزمة تطوير البرامج (SDK) للإدخال.

يمكن للمستخدمين الوصول إلى هذه الميزة من خلال فتح التراكب، واختيار عناصر التحكم، ثم النقر على الإجراء الذي يريدون إعادة تخصيصه

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

يخزِّن برنامج "ألعاب Google Play على الكمبيوتر" عناصر التحكّم التي تمت إعادة تخصيصها للمستخدم محليًا للاحتفاظ بها. عبر جلسات الألعاب نظرًا لأنه يتم تخزين هذه الإعدادات محليًا، فلا التي تؤثر في تجربة الأجهزة الجوّالة ويتم حذفها عند إلغاء تثبيت تطبيق "ألعاب Google Play على الكمبيوتر". لا تستمر الإعدادات على أجهزة كمبيوتر متعددة.

لا تحتاج إلى ترقية "حزمة تطوير البرامج (SDK) للإدخال" لتفعيل إعادة تخصيص المفاتيح في لعبتك، ولكن سيتم إيقاف إعادة التخصيص للعبتك إذا تم رصد إعدادات غير متوافقة.

إذا كنت تريد التحكّم في تجربة إعادة تخصيص الإدخالات أو ميزة إعادة التخصيص تم إيقافه في لعبتك، اتّبِع الخطوات التالية:

إذا كنت تريد إيقاف ميزة إعادة تخصيص لعبتك مع الاستمرار يعرض نسخة للقراءة فقط من روابط المفاتيح، اتبع الخطوات التالية:

  • الترقية إلى حزمة تطوير البرامج (SDK) 1.1.0-beta للإدخال
  • يُرجى تعديل InputMap لضبط ميزة إعادة التخصيص غير مفعَّلة.

يمكنك ترقية الإصدار من "حزمة تطوير البرامج (SDK) للإدخال" إلى 1.1.0-beta لتنفيذ الاستفادة من ميزات إعادة الخرائط المتقدّمة في برنامج "ألعاب Google Play على الكمبيوتر" من خلال يمكنك إضافة InputContexts لتحديد عناصر التحكّم في مشاهد مختلفة من لعبتك. عمليات الاستدعاء للاستماع إلى إعادة تخصيص الأحداث، وتحديد مجموعة من المفاتيح المحجوزة التي لا يمكن للمستخدم إعادة تخصيص ميزة إعادة التخصيص وإيقافها لكل InputAction InputGroup أو InputMap.

عند الترقية، يجب مراعاة الاستثناءات التالية:

الإعدادات غير المتوافقة

سيتم إيقاف إعادة تخصيص الإدخالات في حال عدم استيفاء الشروط التالية:

  • InputAction الذي يستخدم مفاتيح متعددة يجب أن يتكون من مفتاح تعديل وغير المعدّل. على سبيل المثال، يكون Shift + A صالحًا ولكن A + B وCtrl + Alt وShift + A + Tab غير صالحة.

  • لا يمكن أن يتشارك كائنان أو أكثر من InputAction أو InputGroup نفس العنصر. بمعرّف فريد.

لمحة عن InsertContext

يتيح InputContext للعبة استخدام المفتاح نفسه لإجراءات مختلفة في لعبتك بدون تعارض. بهذه الطريقة، إذا كانت اللعبة تستخدم مساحة للقفز أثناء أسلوب اللعب وتأكيد خيارات القائمة، يمكن للاعبين إعادة تخصيص المسافة للدخول في القوائم بشكل فردي space إلى السهم المتّجه للأعلى أثناء اللعب.

يوضّح الرسم البياني للتسلسل التالي طريقة عمل واجهة برمجة تطبيقات setInputContext() في وقت التشغيل:

مخطّط بياني يعرض مسار "حزمة تطوير البرامج (SDK) للإدخال" عند إعادة تخصيص المفاتيح

ترقية

لا تزال الألعاب التي تستخدم عمليات تنفيذ سابقة لحزمة تطوير البرامج (SDK) للإدخال متوافقة لإعادة الصياغة الأساسية، ما لم يستخدموا الإعدادات غير المتوافقة. إذا كانت لعبتك تستخدم من إصدار قديم من حزمة SDK الإدخال، ففكر في قراءة دليل الترقية من الإصدار 0.0.4 إلى الإصدار 1.0.0 التجريبي.

تؤدي الترقية إلى الإصدار 1.1.0 إلى تفعيل ميزات جديدة، ومنها:

  • إحداث تغييرات في السياق
  • تلقي إشعارات لأحداث الربط الرئيسية
  • إيقاف إعادة التخصيص لكل إجراء أو مجموعة أو سياق أو خريطة

التثبيت

يمكنك استخدام الإصدار التجريبي من المكوّن الإضافي Unity. عليك حذف أي الإصدارات السابقة من "حزمة تطوير البرامج (SDK) للإدخال" التي تمّ تثبيتها في لعبتك والترقية إلى الإصدار النسخة الحالية.

لإضافة الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال إلى لعبتك، يمكنك الاطّلاع على إضافة حزمة تطوير البرامج (SDK):

تحديد الحقول الثابتة

بالنسبة إلى الإصدار 1.1.0-التجريبي، من المستحسن تحديد InputActions، InputGroups وInputContexts وInputMap كحقول ثابتة InputMappingProvider، حيث يمكن الوصول إلى هذه الحقول من قبل غيرك في أجزاء محددة من تطبيقك:

#if PLAY_GAMES_PC
using Java.Lang;
using Java.Util;
using Google.Android.Libraries.Play.Games.Inputmapping;
using Google.Android.Libraries.Play.Games.Inputmapping.Datamodel;

public class InputSDKMappingProvider : InputMappingProviderCallbackHelper
{
    public static readonly string INPUT_MAP_VERSION = "1.0.0";

    private static readonly InputAction driveInputAction =
            InputAction.Create(...);
    private static readonly InputGroup roadInputGroup = InputGroup.Create(...);
    public static readonly InputContext roadControlsContext =
            InputContext.Create(...);
    public static readonly InputMap inputMap = InputMap.Create(...);

    public override InputMap OnProvideInputMap()
    {
        return inputMap;
    }
}
#endif

تحديث إجراءات الإدخال

أسلوب InputAction.create() لإدخال SDK 1.0.0-beta هو نهائيًا. InputAction له معرّف إصدار ويمكن وضع علامة عليه باعتباره قابل للإعادة أم لا. تم تحديد InputAction باستخدام حزمة تطوير البرامج (SDK) للإدخال. طريقة create() في 1.0.0-beta قابلة لإعادة الضبط تلقائيًا وتفتقر إلى إنشاء النُسخ المعلومات:

EnterAction في الإصدار 1.0.0-beta من حزمة تطوير البرامج (SDK) للإدخال

var driveAction = PlayInputAction.Create(
    "Drive",
    (long)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        new List<PlayMouseAction>()
    )
);

EnterAction في الإصدار 1.1.0-beta من حزمة SDK للإدخال

private static readonly InputAction driveInputAction = InputAction.Create(
    "Drive",
    (long)InputEventIds.DRIVE,
    InputControls.Create(
        new[] { new Integer(AndroidKeyCode.KEYCODE_SPACE) }.ToJavaList(),
        new ArrayList<Integer>()),
    InputEnums.REMAP_OPTION_ENABLED
);

إدخال Action في الإصدار 1.1.0-beta للإدخال (مع سلسلة الإصدار)

private static readonly InputAction driveInputAction = InputAction.Create(
    "Drive",
    InputControls.Create(
        new[] { new Integer(AndroidKeyCode.KEYCODE_SPACE) }.ToJavaList(),
        new ArrayList<Integer>()),
    InputIdentifier.Create(
        INPUT_MAP_VERSION, (long)InputEventIds.DRIVE),
    InputEnums.REMAP_OPTION_ENABLED
);

لمزيد من المعلومات عن تحديد نُسخ عمليات ربط المفاتيح، راجِع أرقام تعريف مفاتيح التتبُّع

تحديث enterGroups

في SDK للإدخال 1.1.0-beta، تحتاج إلى تحديد كل منها بشكل فريد InputGroup ينتمي كل InputAction إلى InputGroup -- وهي مجموعة من الإجراءات ذات الصلة. يساعد هذا الإجراء في تحسين إمكانية التنقّل في عناصر التحكّم وقابلية اكتشافها. أثناء اللعب. يجب أن يتضمّن InputAction معرّفًا فريدًا. من بين جميع الإجراءات في InputContext واحد، يجب أن يتضمّن InputGroup معرّف فريد على مستوى المجموعات الحالية.

في ما يتعلّق بالأمثلة الواردة في هذا القسم، تتضمّن اللعبة كائنَين "InputContext" تمثل القائمة الرئيسية وأسلوب اللعب. يتم تتبع الأرقام التعريفية المناسبة لكل منها InputGroup في هذه السياقات باستخدام التعداد التالي:

public enum InputGroupsIds
{
    // Main menu scene
    BASIC_NAVIGATION, // WASD, Enter, Backspace
    MENU_ACTIONS, // C: chat, Space: quick game, S: store
    // Gameplay scene
    BASIC_MOVEMENT, // WASD, space: jump, Shift: run
    MOUSE_ACTIONS, // Left click: shoot, Right click: aim
    EMOJIS, // Emojis with keys 1,2,3,4 and 5
    GAME_ACTIONS, // M: map, P: pause, R: reload
}

مثل InputAction، أسلوب InputGroup.create() الخاص بحزمة تطوير البرامج (SDK) للإدخال تم إيقاف 1.0.0-beta نهائيًا. يجب تحديث "InputGroup" في لعبتك. بمعرّف الإصدار والقيمة المنطقية التي تشير إلى ما إذا كان InputAction الكائنات في مجموعاتك قابلة لإعادة الربط. المجموعات التي تم إنشاؤها باستخدام أسلوب الإدخال SDK 1.0.0-beta create() المتوقّفة قابلة لإعادة الربط، ويكون لها رقم التعريف 0. ورقم تعريف الإصدار هو سلسلة فارغة (""):

EnterGroup في الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال

var gameInputGroup = PlayInputGroup.Create(
    "Road controls",
    new List<PlayInputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openPgsAction,
        openStoreAction
    }
);

EnterGroup في الإصدار التجريبي من حزمة تطوير البرامج (SDK) للإدخال 1.1.0

private static readonly InputGroup roadInputGroup = InputGroup.Create(
    "Road controls",
    new[]
    {
        driveInputAction,
        turboInputAction,
        openGarageInputAction,
        openPgsInputAction,
        openStoreInputAction,
    }.ToJavaList(),
    (long)InputGroupsIds.ROAD_CONTROLS,
    // All input actions of this group will be remappable unless specified
    // the contrary by the individual input actions.
    InputEnums.REMAP_OPTION_ENABLED
);

الإدخالGroup في الإصدار 1.1.0-beta من حزمة تطوير البرامج (SDK) للإدخال (مع سلسلة الإصدار)

private static readonly InputGroup roadInputGroup = InputGroup.Create(
    "Road controls",
    new[]
    {
        driveInputAction,
        turboInputAction,
        openGarageInputAction,
        openPgsInputAction,
        openStoreInputAction,
    }.ToJavaList(),
    InputIdentifier.Create(
        INPUT_MAP_VERSION, (long)InputGroupsIds.ROAD_CONTROLS),
    // All input actions of this group will be remappable unless specified
    // the contrary by the individual input actions.
    InputEnums.REMAP_OPTION_ENABLED
);

لمزيد من المعلومات عن تحديد نُسخ عمليات ربط المفاتيح، راجِع أرقام تعريف مفاتيح التتبُّع

تحديث خريطة الإدخال

تم تغيير طريقة InputMap.create() لإدخال حزمة تطوير البرامج (SDK) 1.0.0-beta نهائيًا. يجب تعديل "InputMap" لتحديد معرّف الإصدار. يمكنك إيقاف هذا الإعداد. تمامًا من ميزة إعادة التخصيص أو تعيين قائمة بالمفاتيح المحجوزة اللعبة التي لا تريد أن يتم استخدامها لإعادة تخصيصها من قِبل المستخدم. كل InputMap باستخدام أسلوب create() للإدخال SDK للإدخال 1.0.0-beta قابل للإعادة بشكل افتراضي، ويتم تحديده بالمعرّف 0، ولا يحتوي على المفاتيح المحجوزة.

خريطة الإدخال في الإصدار 1.0.0 من حزمة تطوير البرامج (SDK) للإدخال

var gameInputMap = PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

خريطة الإدخال في الإصدار 1.1.0 من حزمة تطوير البرامج (SDK) للإدخال


public static readonly string INPUT_MAP_VERSION = "1.0.0";
public static readonly long INPUT_MAP_ID = 0;

public static readonly InputMap inputMap = InputMap.Create(
    new[] { roadInputGroup, menuInputGroup }.ToJavaList(),
    MouseSettings.Create(false, false),
    InputIdentifier.Create(INPUT_MAP_VERSION, INPUT_MAP_ID),
    // Use ESC as reserved key
    InputEnums.REMAP_OPTION_ENABLED,
    new[]
    {
        InputControls.Create(new[]
        {
            new Integer(AndroidKeyCode.KEYCODE_ESCAPE)
        }.ToJavaList(),
        new ArrayList<Integer>())
    }.ToJavaList()
);

الخطوات التالية

مواصلة الترقية إلى الإصدار 1.1.0 - بحلول تخصيص عناصر تحكّم مختلفة لمشاهد مختلفة استخدام InputContexts أو تحديث واجهة المستخدم للعبتك من خلال تلقّي إشعارات بشأن إعادة تخصيص الأحداث باستخدام InputRemappingListeners

عند تحديث عمليات ربط المفاتيح، يمكنك إلقاء نظرة على أفضل الممارسات لتصميم روابط المفاتيح وفكِّر في القيود القيود المفروضة على ميزة إعادة التخصيص