به 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 را به روز کنید

InputAction struct با فراخوانی به PlayInputAction.Create ساخته شده است.

هر کدی را که 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
    }
);

InputMap را به روز کنید

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();