本指南會說明如何將您的遊戲遷移至最新版的 Input SDK。與先前的 0.0.4 預先發布版相較,1.0.0 Beta SDK 在功能上有非常實質的改進。您應儘快從先前的預先發布版遷移至新版。0.0.4 SDK 可持續使用至 2023 年 3 月。
更新依附元件
由於 maven 現已有提供程式庫,請從 libs
目錄中刪除 0.0.4 程式庫。然後,在模組層級 build.grade
檔案中尋找這一行:
implementation files('libs/inputmapping-0.0.4.aar')
將該行內容替換成以下的程式碼:
implementation 'com.google.android.libraries.play.games:inputmapping:1.0.0-beta'
實作新的 InputMappingProvider 介面
在 1.0.0-beta
版本中,之前的抽象類別 InputMappingProvider
已變為介面。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
setInputMappingProvider
和 clearInputMappingProvider
已經取代 registerInputMappingProvider
和 unregisterInputMappingProvider
。另外,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();
}