במדריך הזה נסביר איך להעביר את המשחק שלכם כך שישתמש ב-Input SDK העדכני ביותר. ב-SDK בגרסה 1.0.0-beta יש שיפורים משמעותיים בהשוואה לגרסה הקודמת 0.0.4. מומלץ לעבור מהתצוגות המקדימות הקודמות בהקדם האפשרי. ערכת ה-SDK בגרסה 0.0.4 תמשיך לפעול עד מרץ 2023.
מעדכנים את התלות
מוחקים את הספרייה 0.0.4 מהספרייה libs
כי היא זמינה עכשיו ב-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();
}