Bu kılavuzda, Unity oyununuzu en yeni Input SDK'yı kullanacak şekilde nasıl taşıyacağınız açıklanmaktadır. 1.0.0-beta SDK, önceki 0.0.4 önizlemesine kıyasla önemli ölçüde iyileştirilmiştir. En kısa sürede önceki önizlemelerden geçiş yapmanız gerekir. 0.0.4 SDK'sı Mart 2023'e kadar çalışmaya devam edecektir.
Referansları güncelleme
Unity ile adlandırma çakışmalarını önlemek için sınıflar Play önekini aldı.
Aşağıdakine benzer bir hata mesajı gördüğünüzde:
error CS0246: The type or namespace name 'InputMappingProvider' could not be found (are you missing a using directive or an assembly reference?) [error CS0246: The type or namespace name 'InputMappingProvider' could not be found (are you missing a using directive or an assembly reference?)]
sınıf adına Play önekini eklemeniz gerekir. Örneğin, InputMappingProvider, PlayInputMappingProvider olur.
Her InputAction'ı güncelleme
InputAction artık adlandırılmış alanlarla yeni bir struct oluşturmak yerine PlayInputAction.Create çağrısıyla oluşturuluyor.
new InputAction işlevini çağıran kodları bulun:
var driveAction = new InputAction
{
ActionLabel = "Drive",
UniqueId = (int)InputEventIds.DRIVE,
InputControls = new InputControls
{
AndroidKeycodes = new[] { AndroidKeyCode.KEYCODE_SPACE }
}
};
Şu şekilde değiştirin:PlayInputAction.Create
var driveAction = PlayInputAction.Create(
"Drive",
(int)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
null
)
);
Her InputGroup'u güncelleme
InputAction gibi, InputGroup de artık struct formunu manuel olarak doldurmanızı gerektirmek yerine PlayInputGroup.Create görüşmesi sunuyor.
Bu nedenle, new InputGroup ile ilgili tüm aramaları bulmanız gerekir:
var gameInputGroup = new InputGroup
{
GroupLabel = "Game controls",
InputActions = new List<InputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
};
Şu şekilde değiştirin: PlayInputGroup.Create
var gameInputGroup = PlayInputGroup.Create(
"Game controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openStoreAction
}
);
InputMap'i güncelleme
InputMap, yeni bir yapı oluşturmak yerine PlayInputMap.Create da kullanır.
new InputMap numarasına yapılan aramaları bulun:
return new InputMap
{
InputGroups = new List<InputGroup>
{
gameInputGroup,
menuInputGroup
},
MouseSettings = new MouseSettings
{
AllowMouseSensitivityAdjustment = false,
InvertMouseMovement = false
}
};
Şu şekilde değiştirin:PlayInputMap.Create
return PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
PlayInputMappingClient yöntemlerini yeniden adlandırma
PlayInputMappingClient için RegisterInputMappingProvider, SetInputMappingProvider olarak yeniden adlandırıldı.
Bu nedenle, RegisterInputMappingProvider numarasına yapılan tüm aramaları bulun:
Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);
Bunları SetInputMappingProvider çağrısıyla değiştirin:
PlayInputMappingClient inputMappingClient =
Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);
UnregisterInputMappingProvider da ClearInputMappingProvider olarak yeniden adlandırıldı ve artık daha önce kaydettiğiniz InputMappingProvider parametresini kullanmıyor.
UnregisterInputMappingProvider numarasına yapılan aramaları bulun:
Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);
Bunları ClearInputMappingProvider ile değiştirin:
PlayInput.GetInputMappingClient().ClearInputMappingProvider();