Java ve Kotlin için Giriş SDK'sını 1.1 sürümüne yükseltin

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 ancak A + B, Ctrl + Alt ve Üst Karakter + A + Sekme aynı değildir.

  • İki veya daha fazla InputAction ya da InputGroup 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:

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.