Bu rehberde, oyununuzu 1.0.0-beta sürümünden nasıl yükselteceğiniz açıklanmaktadır. Java ve Kotlin için 1.1.0-beta sürümüne giriş SDK'sı. Bkz. Unity için Unity yükseltme kılavuzu talimatları uygulayın.
Sürüm Notları
PC Üzerinde Google Play Games, klavye kontrollerinin yeniden eşlenmesini destekliyor. giriş SDK'sı kullanarak oyununuzun tuş bağlamaları üzerinde daha fazla kontrol sahibi olmanızı sağlar.
Kullanıcılar bu özelliğe yer paylaşımını tıklayın, kontrolleri seçin ve ve yeniden eşlemek istedikleri işlemi tıklamaktır.
PC Üzerinde Google Play Games, kullanıcı tarafından yeniden eşlenen her girişi oyununuzun varsayılan bilgileriyle eşler giriş. Böylece oyununuz, oyuncunun yeniden eşlendiğini fark etmek zorunda kalmaz. Eğer her bir oyun içi işlem için yeni girişi bilmeniz gerekir. Örneğin, klavye denetimleri kullanıyorsanız, isteğe bağlı olarak bir geri çağırma yeniden eşleme etkinlikleri için bildirim gönderildi.
PC Üzerinde Google Play Games, her kullanıcının yeniden eşlenen kontrollerini yerel olarak depolar. Böylece çok daha fazladır. Bu öğe yerel olarak depolandığından Mobil deneyimi etkiler ve PC Üzerinde Google Play Games'in kaldırılmasından sonra silinir. Kontrol ayarları birden fazla kuruluş biriminde kalıcı olmaz PC cihazları.
Tuş yeniden eşlemeyi etkinleştirmek için Giriş SDK'sını yeni sürüme geçirmeniz gerekmez yeniden eşleme özelliği, oyununuz için devre dışı bırakılabilir. desteklenmeyen yapılandırma tespit edildiğinde.
Giriş yeniden eşleme deneyimini kontrol etmek istiyorsanız veya yeniden eşleme özelliği, oyununuz için devre dışı bırakılmışsa sorunu çözmek için aşağıdaki adımları uygulayın:
- Giriş SDK'sı
1.1.0-beta
sürümüne yükseltin. - Hatanın yaşanmaması için tüm tuş bağlamalarını güncelleyin desteklenmeyen yapılandırmalar.
- Yeniden eşleme özelliğini etkin olarak ayarlamak için
InputMap
cihazınızı güncelleyin.
Yine de oyununuzun yeniden eşleme özelliğini devre dışı bırakmak olarak görüntülemek için şu adımları uygulayın:
- Giriş SDK'sı
1.1.0-beta
sürümüne yükseltin. - Yeniden eşleme özelliğini devre dışı olarak ayarlamak için
InputMap
öğenizi güncelleyin.
Kullanmak için Giriş SDK'sı sürümünüzü 1.1.0-beta
sürümüne yükseltebilirsiniz
PC Üzerinde Google Play Games'de gelişmiş yeniden eşleme özelliklerinin avantajından
Oyununuzun farklı sahnelerine yönelik kontrolleri tanımlamak için InputContexts
,
yeniden eşleme etkinliklerini dinlemek için geri çağırma seçenekleri sunar,
kullanıcı InputAction
için yeniden eşleme özelliğini yeniden eşleyemez ve devre dışı bırakamaz.
InputGroup
veya InputMap
.
Yeni SDK sürümüne geçerken aşağıdaki istisnaları göz önünde bulundurun:
Desteklenmeyen yapılandırmalar
Aşağıdaki koşullar karşılanmazsa giriş yeniden eşleme devre dışı bırakılır:
Birden fazla anahtar kullanan
InputAction
bir değiştiriciden oluşmalıdır ve değiştirilmeyen tuşa basın. Örneğin,Üst Karakter + A geçerlidir ancakA + B ,Ctrl + Alt veÜst Karakter + A + Sekme aynı değildir.İki veya daha fazla
InputAction
ya daInputGroup
nesnesi aynı olamaz benzersiz kimlik.
Yükselt
Giriş SDK'sı 1.1.0-beta, Giriş SDK'sı ile geriye dönük uyumludur 1.0.0-beta sürümündedir. Giriş SDK'sının önceki uygulamalarını kullanan oyunlar bir alt alan adı kullanmadıkları sürece temel yeniden desteklenmeyen yapılandırma. Oyununuzda giriş SDK'sının önceki sürümlerinden birini kullanıyorsanız, 0.0.4'ten 1.0.0-beta'ya yükseltme kılavuzu.
1.1.0-beta sürümüne geçmek aşağıdaki yeni özellikleri etkinleştirir:
- Sahne kontrolü değişikliklerini tetikleme.
- Önemli eşleme etkinlikleri hakkında bildirim alma
- İşlem, Grup, Bağlam veya Harita başına yeniden eşlemeyi devre dışı bırakma.
Bağımlılığı yükseltme
Giriş SDK'sını içe aktarmak için Gradle kullanıyorsanız en yeni sürüme yükseltin:
// build.gradle
dependencies {
...
implementation 'com.google.android.libraries.play.games:inputmapping:1.1.0-beta'
...
}
Statik alanları tanımlayın
1.1.0-beta
sürümünde InputAction
,
InputGroup
, InputContext
ve InputMap
nesneleri
Bu alanlara başka bölümlerden erişilebildiği için InputMappingProvider
sınıfı
seçin:
Kotlin
class InputSDKProvider : InputMappingProvider {
override fun onProvideInputMap(): InputMap { return gameInputMap }
companion object {
const val INPUTMAP_VERSION = "1.0.0"
private val moveUpInputAction = InputAction.create(...)
private val movementInputGroup = InputGroup.create(...)
val menuContext = InputContext.create(...)
val gameInputMap = InputMap.create(...)
}
}
Java
public class MyInputMappingProvider implements InputMappingProvider {
private static final String INPUTMAP_VERSION = "1.0.0";
private static final InputAction moveUpInputAction =
InputAction.create(...);
private static final InputGroup movementInputGroup = InputGroup.create(...);
public static final InputContext menuContext = InputContext.create(...);
public static final InputMap gameInputMap = InputMap.create(...);
@Override
public InputMap onProvideInputMap() {
return gameInputMap;
}
}
Giriş Eylemlerinizi güncelleme
InputAction.create()
için giriş SDK'sı 1.0.0-beta
yöntemi:
desteği sonlandırıldı. InputAction
artık bir sürüm tanımlayıcısına sahip ve şu şekilde işaretlenebilir:
yeniden eşlenebilir olup olmaması gerekir. Giriş SDK'sı kullanılarak tanımlanan InputAction
1.0.0-beta
create()
yöntemi varsayılan olarak yeniden eşlenebilir ve sürüm oluşturmaz
bilgi:
Giriş SDK'sı 1.0.0-beta'da Giriş İşlemi
Kotlin
val jumpInputAction = InputAction.create(
"Jump",
InputEventIds.JUMP.id,
InputControls.create(
listOf(KeyEvent.KEYCODE_SPACE),
emptyList()
)
)
Java
InputAction moveUpInputAction = InputAction.create(
"Move Up",
InputEventIds.MOVE_UP.ordinal(),
InputControls.create(
Collections.singletonList(KeyEvent.KEYCODE_W),
Collections.emptyList()
)
);
Giriş SDK'sı 1.1.0-beta'da Giriş İşlemi
Kotlin
companion object {
private val moveUpInputAction = InputAction.create(
"Move Up",
InputActionsIds.DRIVE.ordinal.toLong(),
InputControls.create(listOf(KeyEvent.KEYCODE_W), emptyList()),
InputEnums.REMAP_OPTION_ENABLED) // This action is remappable
}
Java
private static final InputAction moveUpInputAction = InputAction.create(
"Move Up",
InputEventIds.MOVE_UP.ordinal(),
InputControls.create(
Collections.singletonList(KeyEvent.KEYCODE_W),
Collections.emptyList()),
InputEnums.REMAP_OPTION_ENABLED // this action is remappable
);
Giriş SDK'sı 1.1.0-beta'da Giriş İşlemi (sürüm dizesiyle)
Kotlin
private val enterMenuInputAction = InputAction.create(
"Enter menu",
InputControls.create(listOf(KeyEvent.KEYCODE_ENTER), emptyList()),
InputIdentifier.create(
INPUTMAP_VERSION, InputActionsIds.ENTER_MENU.ordinal.toLong()),
InputEnums.REMAP_OPTION_ENABLED
)
Java
private static final InputAction moveUpInputAction = InputAction.create(
"Move Up",
InputControls.create(
Collections.singletonList(KeyEvent.KEYCODE_W),
Collections.emptyList()),
InputIdentifier.create(
INPUTMAP_VERSION,
InputEventIds.MOVE_UP.ordinal()),
InputEnums.REMAP_OPTION_ENABLED // this action is remappable
);
Anahtar bağlamalarınızın sürümünü oluşturma hakkında daha fazla bilgi için bkz. İzleme anahtarı kimlikleri.
Giriş Gruplarınızı güncelleme
1.1.0-beta
Giriş SDK'sında her birini benzersiz şekilde tanımlamanız gerekir
InputGroup
. Her InputAction
bir InputGroup
koleksiyonuna aittir.
ilgili işlemler. Bu, kontrollerde gezinmeyi ve keşfedilebilirliği iyileştirir
dikkat edin. Aynı şekilde InputAction
öğesinin benzersiz bir tanımlayıcısı olması gerektiği gibi
tek bir InputContext
içindeki tüm işlemler arasında
bir InputGroup
mevcut gruplar arasında benzersiz kimlik.
Bu bölümdeki örneklerde, bir oyunda iki InputContext
nesnesi vardır
ana menüyü ve oynanabilirliği temsil eder. Her biri için uygun kimlikler izlenir
Bu bağlamlarda InputGroup
değerini kullanarak aşağıdaki numaralandırmayı kullanın:
Kotlin
enum class InputGroupsIds {
// Main menu scene
BASIC_NAVIGATION, // WASD, Enter, Backspace
MENU_ACTIONS, // C: chat, Space: quick game, S: store
// Gameplay scene
BASIC_MOVEMENT, // WASD, space: jump, Shift: run
MOUSE_ACTIONS, // Left click: shoot, Right click: aim
EMOJIS, // Emojis with keys 1,2,3,4 and 5
GAME_ACTIONS, // M: map, P: pause, R: reload
}
Java
public enum InputGroupsIds {
// Main menu scene
BASIC_NAVIGATION, // WASD, Enter, Backspace
MENU_ACTIONS, // C: chat, Space: quick game, S: store
// Gameplay scene
BASIC_MOVEMENT, // WASD, space: jump, Shift: run
MOUSE_ACTIONS, // Left click: shoot, Right click: aim
EMOJIS, // Emojis with keys 1,2,3,4 and 5
GAME_ACTIONS, // M: map, P: pause, R: reload
}
InputAction
gibi, Giriş SDK'sının InputGroup.create()
yöntemi
1.0.0-beta
desteği sonlandırıldı. Oyununuzda InputGroup
bilgisini güncellemeniz gerekiyor
InputAction
sürümünün geçerli olup olmadığını gösteren bir sürüm tanımlayıcısı ve
nesnelerin yeniden eşlenebilir olduğunu unutmayın. Desteği sonlandırılan Giriş SDK'sı 1.0.0-beta
create()
yöntemiyle oluşturulan gruplar yeniden eşleştirilebilir. Bu gruplar kimliği 0'dır.
ve sürüm kimliği boş bir dizedir (""
):
Giriş SDK'sı 1.0.0-beta'da Giriş Grubu
Kotlin
val movementInputGroup = InputGroup.create(
"Basic Movement",
listOf(
moveUpInputAction,
moveLeftInputAction,
moveDownInputAction,
moveRightInputAction,
jumpInputAction,
runInputAction)
)
Java
InputGroup movementInputGroup = InputGroup.create(
"Basic movement",
Arrays.asList(
moveUpInputAction,
moveLeftInputAction,
moveDownInputAction,
moveRightInputAction,
jumpInputAction,
runInputAction
)
);
Giriş SDK'sı 1.1.0-beta'da Giriş Grubu
Kotlin
companion object {
private val movementInputGroup = InputGroup.create(
"Basic movement",
listOf(
moveUpInputAction,
moveLeftInputAction,
moveDownInputAction,
moveRightInputAction,
jumpInputAction,
runInputAction),
InputGroupsIds.BASIC_MOVEMENT.ordinal.toLong(),
// All the actions in this groups can't be remapped
InputEnums.REMAP_OPTION_DISABLED
)
}
Java
private static final InputGroup movementInputGroup = InputGroup.create(
"Basic movement",
Arrays.asList(
moveUpInputAction,
moveLeftInputAction,
moveDownInputAction,
moveRightInputAction,
jumpInputAction,
runInputAction
),
InputGroupsIds.BASIC_MOVEMENT.ordinal(),
// All the actions in this groups can't be remapped
InputEnums.REMAP_OPTION_DISABLED
);
Giriş SDK'sı 1.1.0-beta'da Giriş Grubu (sürüm dizesiyle)
Kotlin
companion object {
private val movementInputGroup = InputGroup.create(
"Basic movement",
listOf(
moveUpInputAction,
moveLeftInputAction,
moveDownInputAction,
moveRightInputAction,
jumpInputAction,
runInputAction),
InputIdentifier.create(
INPUTMAP_VERSION, InputGroupsIds.BASIC_MOVEMENT.ordinal.toLong()),
// All the actions in this groups can't be remapped
InputEnums.REMAP_OPTION_DISABLED
)
}
Java
private static final InputGroup movementInputGroup = InputGroup.create(
"Basic movement",
Arrays.asList(
moveUpInputAction,
moveLeftInputAction,
moveDownInputAction,
moveRightInputAction,
jumpInputAction,
runInputAction
),
InputIdentifier.create(
INPUTMAP_VERSION,
InputGroupsIds.BASIC_MOVEMENT.ordinal()),
// All the actions in this groups can't be remapped
InputEnums.REMAP_OPTION_DISABLED
);
Anahtar bağlamalarınızın sürümünü oluşturma hakkında daha fazla bilgi için bkz. İzleme anahtarı kimlikleri.
Giriş Haritası'nı güncelleme
InputMap.create()
giriş SDK'sı 1.0.0-beta
yöntemi (yeni):
desteği sonlandırıldı. Sürüm tanımlayıcısı atamak için InputMap
öğenizi güncelleyin, kapsam dışında kalmayı seçin
özelliğini kullanın veya cihazınız için ayrılmış tuşların bir listesini
için kullanılmasını istemediğiniz bir oyun. Her InputMap
Giriş SDK'sı 1.0.0-beta
create()
yöntemi kullanılarak tanımlanır.
varsayılan olarak yeniden eşlenebilir, 0
kimliğiyle tanımlanır ve
anahtar sayısı.
Giriş SDK'sı 1.0.0-beta'da Giriş Haritası
Kotlin
val gameInputMap = InputMap.create(
listOf(movementInputGroup, mouseMovementInputGroup),
MouseSettings.create(true, false)
)
Java
InputMap gameInputMap = InputMap.create(
Arrays.asList(movementInputGroup, mouseMovementInputGroup),
MouseSettings.create(true, false)
);
Giriş SDK'sı 1.1.0-beta'da Giriş Haritası
Kotlin
companion object {
const val INPUTMAP_VERSION = "1.0.0"
const val INPUT_MAP_ID = 0
val gameInputMap = InputMap.create(
listOf(movementInputGroup, mouseMovementInputGroup),
MouseSettings.create(true, false),
InputIdentifier.create(INPUTMAP_VERSION, INPUT_MAP_ID.toLong()),
InputEnums.REMAP_OPTION_ENABLED,
// Use ESCAPE as reserved key
listof(InputControls.create(listOf(KeyEvent.KEYCODE_ESCAPE), emptyList()))
)
}
Java
public static final String INPUT_MAP_VERSION = "1.0.0-beta";
public static final long INPUT_MAP_ID = 0;
public static final InputMap gameInputMap = InputMap.create(
Arrays.asList(movementInputGroup, mouseMovementInputGroup),
MouseSettings.create(true, false),
InputIdentifier.create(INPUTMAP_VERSION, INPUT_MAP_ID),
InputEnums.REMAP_OPTION_ENABLED,
// Use ESC key as reserved key
Arrays.asList(
InputControls.create(
Collections.singletonList(KeyEvent.KEYCODE_ESCAPE),
Collections.emptyList()
)
)
);
Sırada ne var?
1.1.0-beta sürümüne geçme işlemine devam edin
Farklı sahneler için farklı kontroller atama
InputContexts
kullanarak veya oyununuzun kullanıcı arayüzünü güncelleyerek
Yeniden eşleme etkinlikleri hakkında bildirim alma
InputRemappingListeners
.
Tuş bağlamalarınızı güncellerken şuraya bakın: Anahtar bağlamaları tasarlamayla ilgili en iyi uygulamalar ve kısıtlamaları yeniden eşleme özelliğiyle ilgili kısıtlamalar vardır.