1.0.0-beta Giriş SDK'sına Geçin

Bu kılavuzda, Unity oyununuzu en yeni Input SDK'sını 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 önizleme sürümlerinden 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ı. Şuna 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 }
    }
};

Ve bunu PlayInputAction.Create ile yapılan bir görüşmeyle değiştirin:

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 yapmanızı istiyor.

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
    }
};

Ve bunu PlayInputGroup.Create numarasına yapılan bir aramayla değiştirin:

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 öğesini de 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
    }
};

Ve bunu PlayInputMap.Create ile yapılan bir görüşmeyle değiştirin:

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 kaydedilmiş olan InputMappingProvider parametresini kullanmıyor.

UnregisterInputMappingProvider numarasına yapılan aramaları bulun:

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

Ve bunları ClearInputMappingProvider ile değiştirin:

PlayInput.GetInputMappingClient().ClearInputMappingProvider();