این راهنما نحوه انتقال بازی 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();