Z tego przewodnika dowiesz się, jak przenieść grę, aby korzystała z najnowszego pakietu SDK Input. Pakiet SDK w wersji 1.0.0-beta zawiera istotne ulepszenia w porównaniu z poprzednią wersją 0.0.4. Jak najszybciej przeprowadź migrację z wcześniejszych wersji podglądowych. Pakiet SDK w wersji 0.0.4 będzie działać do marca 2023 roku.
Aktualizowanie zależności
Usuń bibliotekę 0.0.4 z katalogu libs, ponieważ jest ona teraz dostępna w Mavenie. Następnie znajdź ten wiersz w pliku build.grade na poziomie modułu:
implementation files('libs/inputmapping-0.0.4.aar')
Zastąp go tym kodem:
implementation 'com.google.android.libraries.play.games:inputmapping:1.0.0-beta'
Implementowanie nowego interfejsu InputMappingProvider
W wersji 1.0.0-beta dawna klasa abstrakcyjna InputMappingProvider została przekształcona w interfejs. Metoda onProvideInputMap() nadal jest częścią interfejsu.
Kotlin
Usuń () z definicji klasy, ponieważ w InputMappingProvider nie ma konstruktora do wywołania.
Znajdź implementację InputMappingProvider:
class MyInputMapProvider : InputMappingProvider() {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
i zaktualizuj ją do tej wartości:
class MyInputMapProvider : InputMappingProvider {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
Java
Zastąp extends ciągiem implements, aby wskazać, że implementujesz interfejs, a nie rozszerzasz klasy.
Znajdź miejsce, w którym możesz przedłużyć okres ochrony InputMappingProvider:
public class MyInputMapProvider extends InputMappingProvider {
@NonNull
@Override
public InputMap onProvideInputMap() {
// TODO: return an InputMap
}
}
Zmień go, aby wdrożyć InputMappingProvider:
public class MyInputMapProvider implements InputMappingProvider {
@NonNull
@Override
public InputMap onProvideInputMap() {
// TODO: return an InputMap
}
}
Używanie nowego interfejsu InputClient
registerInputMappingProvider i unregisterInputMappingProvider zostały zastąpione przez setInputMappingProvider i clearInputMappingProvider.
Poza tym funkcja clearInputMappingProvider nie przyjmuje już argumentu, więc nie musisz już przechowywać odwołania do dostawcy, aby później wyrejestrować go.
Kotlin
Aby zarejestrować dostawcę mapy danych wejściowych, znajdź wywołanie funkcjiregisterInputMappingProvider:
private val myInputMapProvider by lazy {
MyInputMapProvider()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.registerInputMappingProvider(myInputMapProvider)
}
Zastąp go tym tekstem: setInputMappingProvider
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.setInputMappingProvider(MyInputMapProvider())
}
Aby wyczyścić mapę wejściową, znajdź wywołanie funkcji unregisterInputMappingProvider:
override fun onDestroy() {
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.unregisterInputMappingProvider(myInputMapProvider)
super.onDestroy()
}
Zastąp go tym tekstem: clearInputMappingprovider
override fun onDestroy() {
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.clearInputMappingProvider()
super.onDestroy()
}
Java
Aby zarejestrować dostawcę mapy danych wejściowych, znajdź wywołanie funkcji registerInputMappingProvider:
private final MyInputMapProvider myInputMapProvider = new MyInputMapProvider();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.registerInputMappingProvider(myInputMapProvider);
}
Zastąp go tym tekstem: setInputMappingProvider
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.setInputMappingProvider(new MyInputMapProvider());
}
Aby wyczyścić dostawcę mapowania danych wejściowych, znajdź wywołanie funkcji
unregisterInputMappingProvider:
@Override
protected void onDestroy() {
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.unregisterInputMappingProvider(myInputMapProvider);
super.onDestroy();
}
Zastąp go tym tekstem: clearInputMappingProvider
@Override
protected void onDestroy() {
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.clearInputMappingProvider();
super.onDestroy();
}