1.0.0 ベータ版 Input SDK に移行する

このガイドでは、最新の Input SDK を使用するようにゲームを移行する方法について説明します。1.0.0 ベータ版 SDK は、以前の 0.0.4 プレビューから大幅に改善されています。できるだけ早く以前のプレビューから移行してください。0.0.4 SDK は 2023 年 3 月まで引き続き機能します。

依存関係を更新する

Maven で 0.0.4 ライブラリを利用できるようになったので、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 インターフェースを実装する

以前の抽象クラス 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

extendsimplements に置き換え、クラスを拡張せずインターフェースを実装することを示します。

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 を使用する

registerInputMappingProviderunregisterInputMappingProvidersetInputMappingProviderclearInputMappingProvider に置き換えられました。さらに、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();
}