이 가이드에서는 최신 입력 SDK를 사용하도록 Unity 게임을 이전하는 방법을 설명합니다. 1.0.0-beta SDK는 이전 0.0.4 미리보기에 비해 크게 개선되었습니다. 가능한 한 빨리 이전 미리보기에서 이전하시기 바랍니다. 0.0.4 SDK는 2023년 3월까지 계속 작동합니다.
참조 업데이트
Unity와의 이름 지정 충돌을 피하기 위해 클래스에는 Play
접두사가 추가되었습니다.
다음과 유사한 오류 메시지가 표시될 때마다
오류 CS0246: 유형 또는 네임스페이스 이름 'InputMappingProvider'를 찾을 수 없음(지시어 또는 어셈블리 참조를 누락했습니까?)
클래스 이름에 Play
접두사를 추가해야 합니다. 예를 들어 InputMappingProvider
는 PlayInputMappingProvider
가 됩니다.
각 InputAction 업데이트
이제 이름이 지정된 필드로 새 struct
를 만드는 대신 InputAction
은 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
과 마찬가지로 이제는 struct
를 직접 작성하도록 요구하는 대신, InputGroup
에 PlayInputGroup.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 업데이트
새 구조체를 구성하는 대신 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();