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