本指南介绍如何迁移您的游戏以使用最新的输入 SDK。1.0.0-beta SDK 对之前的 0.0.4 预览版进行了重大改进。您应尽快从早期预览版迁移。0.0.4 SDK 将继续运行到 2023 年 3 月。
更新依赖项
从您的 libs
目录中删除 0.0.4 库,因为该库现在可在 Maven 上获得。然后在您的模块级 build.grade
文件中找到此行
implementation files('libs/inputmapping-0.0.4.aar')
将其替换为以下代码
implementation 'com.google.android.libraries.play.games:inputmapping:1.0.0-beta'
实现新的 InputMappingProvider 接口
以前的抽象类 InputMappingProvider
在版本 1.0.0-beta
中变成了接口。方法 onProvideInputMap()
仍然是接口的一部分。
Kotlin
从类定义中删除 ()
,因为在 InputMappingProvider
中没有要调用的构造函数。
找到您的 InputMappingProvider
实现
class MyInputMapProvider : InputMappingProvider() {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
并将其更新为此
class MyInputMapProvider : InputMappingProvider {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
Java
将 extends
替换为 implements
,以指示您正在实现接口而不是扩展类。
找到扩展 InputMappingProvider
的位置
public class MyInputMapProvider extends InputMappingProvider {
@NonNull
@Override
public InputMap onProvideInputMap() {
// TODO: return an InputMap
}
}
并将其更改为实现 InputMappingProvider
public class MyInputMapProvider implements InputMappingProvider {
@NonNull
@Override
public InputMap onProvideInputMap() {
// TODO: return an InputMap
}
}
使用新的 InputClient
registerInputMappingProvider
和 unregisterInputMappingProvider
已被 setInputMappingProvider
和 clearInputMappingProvider
替换。此外,clearInputMappingProvider
不再接受参数,因此您不再需要保留对提供程序的引用以稍后取消注册它。
Kotlin
要注册您的输入映射提供程序,请找到您对registerInputMappingProvider
的调用
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)
}
并将其替换为 setInputMappingProvider
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.setInputMappingProvider(MyInputMapProvider())
}
要清除您的输入映射,请找到您对 unregisterInputMappingProvider
的调用
override fun onDestroy() {
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.unregisterInputMappingProvider(myInputMapProvider)
super.onDestroy()
}
并将其替换为 clearInputMappingprovider
override fun onDestroy() {
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.clearInputMappingProvider()
super.onDestroy()
}
Java
要注册您的输入映射提供程序,请找到您对 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);
}
并将其替换为 setInputMappingProvider
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.setInputMappingProvider(new MyInputMapProvider());
}
要清除您的输入映射提供程序,请找到您对 unregisterInputMappingProvider
的调用
@Override
protected void onDestroy() {
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.unregisterInputMappingProvider(myInputMapProvider);
super.onDestroy();
}
并将其替换为 clearInputMappingProvider
@Override
protected void onDestroy() {
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.clearInputMappingProvider();
super.onDestroy();
}