In diesem Leitfaden wird beschrieben, wie Sie Ihr Spiel migrieren, damit es das neueste Input SDK verwendet. Das 1.0.0-beta SDK bietet erhebliche Verbesserungen gegenüber der vorherigen 0.0.4-Vorabversion. Sie sollten so schnell wie möglich von den früheren Vorabversionen migrieren. Das SDK 0.0.4 funktioniert noch bis März 2023.
Abhängigkeit aktualisieren
Löschen Sie die Bibliothek 0.0.4 aus Ihrem libs-Verzeichnis, da die Bibliothek jetzt auf Maven verfügbar ist. Suchen Sie dann in der Datei build.grade auf Modulebene nach dieser Zeile:
implementation files('libs/inputmapping-0.0.4.aar')
Ersetzen Sie sie durch den folgenden Code:
implementation 'com.google.android.libraries.play.games:inputmapping:1.0.0-beta'
Neue InputMappingProvider-Schnittstelle implementieren
Die ehemalige abstrakte Klasse InputMappingProvider wurde in Version 1.0.0-beta in eine Schnittstelle umgewandelt. Die Methode onProvideInputMap() ist weiterhin Teil der Schnittstelle.
Kotlin
Entfernen Sie () aus der Klassendefinition, da in InputMappingProvider kein Konstruktor aufgerufen werden kann.
Suchen Sie nach Ihrer InputMappingProvider-Implementierung:
class MyInputMapProvider : InputMappingProvider() {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
Aktualisieren Sie ihn auf Folgendes:
class MyInputMapProvider : InputMappingProvider {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
Java
Ersetzen Sie extends durch implements, um anzugeben, dass Sie ein Interface implementieren und keine Klasse erweitern.
Suchen Sie nach der Stelle, an der Sie InputMappingProvider erweitern:
public class MyInputMapProvider extends InputMappingProvider {
@NonNull
@Override
public InputMap onProvideInputMap() {
// TODO: return an InputMap
}
}
Ändern Sie sie, um InputMappingProvider zu implementieren:
public class MyInputMapProvider implements InputMappingProvider {
@NonNull
@Override
public InputMap onProvideInputMap() {
// TODO: return an InputMap
}
}
Neuen InputClient verwenden
registerInputMappingProvider und unregisterInputMappingProvider wurden durch setInputMappingProvider und clearInputMappingProvider ersetzt.
Außerdem akzeptiert clearInputMappingProvider kein Argument mehr. Sie müssen also keinen Verweis auf Ihren Anbieter mehr beibehalten, um ihn später abzumelden.
Kotlin
Suchen Sie nach dem Aufruf vonregisterInputMappingProvider, um Ihren Eingabeanbieter zu registrieren:
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)
}
Ersetzen Sie es durch setInputMappingProvider:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.setInputMappingProvider(MyInputMapProvider())
}
So löschen Sie die Eingabekarte: Suchen Sie nach dem Aufruf von unregisterInputMappingProvider:
override fun onDestroy() {
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.unregisterInputMappingProvider(myInputMapProvider)
super.onDestroy()
}
Ersetzen Sie es durch clearInputMappingprovider:
override fun onDestroy() {
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.clearInputMappingProvider()
super.onDestroy()
}
Java
Suchen Sie nach dem Aufruf von registerInputMappingProvider, um Ihren Eingabeanbieter zu registrieren:
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);
}
Ersetzen Sie es durch setInputMappingProvider:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.setInputMappingProvider(new MyInputMapProvider());
}
So löschen Sie Ihren Anbieter für die Eingabezuordnung: Suchen Sie nach Ihrem Aufruf von unregisterInputMappingProvider:
@Override
protected void onDestroy() {
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.unregisterInputMappingProvider(myInputMapProvider);
super.onDestroy();
}
Ersetzen Sie es durch clearInputMappingProvider:
@Override
protected void onDestroy() {
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.clearInputMappingProvider();
super.onDestroy();
}