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

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

تعديل المراجع

تلقت الفئات البادئة Play لتجنب تسمية التضاربات مع Unity. كلما ظهرت لك رسالة خطأ مشابهة لما يلي:

الخطأ CS0246: النوع أو اسم مساحة الاسم 'InputMappingProvider' تعذَّر تم العثور عليها (هل تفتقد إلى توجيه استخدام أو مرجع تجميع؟)

يجب إضافة البادئة Play إلى اسم الفئة. على سبيل المثال: يصبح InputMappingProvider PlayInputMappingProvider.

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

تم الآن إنشاء 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
    )
);

تحديث كل enterGroup

مثل "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 أيضًا بدلاً من إنشاء صف جديد بنية.

تحديد موقع أي مكالمات مع "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();