1.0.0-beta 입력 SDK로 이전

이 가이드에서는 최신 입력 SDK를 사용하도록 Unity 게임을 이전하는 방법을 설명합니다. 1.0.0-beta SDK는 이전 0.0.4 미리보기에 비해 크게 개선되었습니다. 가능한 한 빨리 이전 미리보기에서 이전하시기 바랍니다. 0.0.4 SDK는 2023년 3월까지 계속 작동합니다.

참조 업데이트

Unity와의 이름 지정 충돌을 피하기 위해 클래스에는 Play 접두사가 추가되었습니다. 다음과 유사한 오류 메시지가 표시될 때마다

오류 CS0246: 유형 또는 네임스페이스 이름 'InputMappingProvider'를 찾을 수 없음(지시어 또는 어셈블리 참조를 누락했습니까?)

클래스 이름에 Play 접두사를 추가해야 합니다. 예를 들어 InputMappingProviderPlayInputMappingProvider가 됩니다.

각 InputAction 업데이트

이제 이름이 지정된 필드로 새 struct를 만드는 대신 InputActionPlayInputAction.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과 마찬가지로 이제는 struct를 직접 작성하도록 요구하는 대신, InputGroupPlayInputGroup.Create 호출이 있습니다.

즉, 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 업데이트

새 구조체를 구성하는 대신 InputMapPlayInputMap.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의 경우 RegisterInputMappingProviderSetInputMappingProvider로 이름이 변경되었습니다.

따라서 다음과 같이 RegisterInputMappingProvider 호출을 찾습니다.

Input.GetInputMappingClient().RegisterInputMappingProvider(_inputMappingProvider);

그리고 그것을 SetInputMappingProvider 호출로 바꿉니다.

PlayInputMappingClient inputMappingClient =
    Google.Play.InputMapping.PlayInput.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(_inputMapProvider);

UnregisterInputMappingProviderClearInputMappingProvider로 이름이 변경되었으며, 더 이상 이전에 매개변수로 등록된 InputMappingProvider를 필요로 하지 않습니다.

UnregisterInputMappingProvider 호출을 찾습니다.

Input.GetInputMappingClient().UnregisterInputMappingProvider(_inputMapProvider);

그것을 ClearInputMappingProvider로 바꿉니다.

PlayInput.GetInputMappingClient().ClearInputMappingProvider();