1.0.0-beta 입력 SDK로 이전

이 가이드에서는 최신 입력 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")
    }
}

자바

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()
}

자바

입력 맵 제공자를 등록하려면 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();
}