يوضّح هذا الدليل كيفية نقل بيانات لعبة Unity لاستخدام أحدث إصدار من حزمة SDK لنظام "إدخال البيانات". تتضمّن حزمة SDK التجريبية 1.0.0 تحسينات كبيرة مقارنةً بالإصدار التمهيدي السابق 0.0.4. يجب نقل البيانات من الإصدارات السابقة من التطبيق في أقرب وقت ممكن. ستستمر حزمة SDK 0.0.4 في العمل حتى آذار (مارس) 2023.
تعديل المراجع
تلقّت الصفوف البادئة Play
لتجنُّب تعارضات الأسماء مع Unity.
عندما تظهر لك رسالة خطأ مشابهة لما يلي:
الخطأ CS0246: تعذّر العثور على اسم النوع أو النطاق "InputMappingProvider" (هل تفتقد إلى توجيه استخدام أو مرجع تجميع؟)
يجب إضافة البادئة Play
إلى اسم الصف. على سبيل المثال،
InputMappingProvider
يصبح PlayInputMappingProvider
.
تعديل كل InputAction
يتم الآن إنشاء InputAction
من خلال طلب PlayInputAction.Create
بدلاً من
إنشاء struct
جديد باستخدام حقول مُسمّاة.
حدِّد موقع أي رمز يستدعي new InputAction
:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
واستبدِلها بمكالمة إلى PlayInputAction.Create
:
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
تعديل كل InputGroup
كما هو الحال مع "InputAction
"، أصبح لدى "InputGroup
" الآن مكالمة PlayInputGroup.Create
بدلاً من أن
يطلب منك ملء struct
يدويًا.
وهذا يعني أنه عليك تحديد موقع أي مكالمات مع "new InputGroup
":
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
واستبدِله بمكالمة إلى PlayInputGroup.Create
:
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
تحديث EnterMap
يستخدم InputMap
PlayInputMap.Create
أيضًا بدلاً من إنشاء
struct جديدة.
تحديد موقع أي مكالمات مع "new InputMap
":
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
واستبدِله بدعوة إلى PlayInputMap.Create
:
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
إعادة تسمية طرق PlayInputMappingClient
بالنسبة إلى PlayInputMappingClient
، تمت إعادة تسمية RegisterInputMappingProvider
إلى
SetInputMappingProvider
.
لتحديد موقع أي مكالمات إلى RegisterInputMappingProvider
:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
واستبدِلها بدعوة إلى SetInputMappingProvider
:
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
تمت أيضًا إعادة تسمية UnregisterInputMappingProvider
ليصبح
ClearInputMappingProvider
ولم يعُد يتطلّب استخدام
InputMappingProvider
المسجّل سابقًا كمَعلمة.
تحديد موقع أي مكالمات مع "UnregisterInputMappingProvider
":
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
واستبدِلها بـ ClearInputMappingProvider
:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();