Unity için Giriş SDK'sını 1.1 sürümüne yükseltme

Bu rehberde, oyununuzu Unity için 1.0'dan 1.1 Giriş SDK'sına nasıl yükselteceğiniz açıklanmaktadır. Burayı tıklayın bölümüne göz atı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 kontrolleri seçerek yer paylaşımını 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, kullanıcıların yeniden eşlenen kontrollerini yerel olarak depolar çok daha fazla ilgi görüyor. Bu ayarlar yerel olarak depolandığından Mobil deneyimi etkiler ve PC Üzerinde Google Play Games'in kaldırılmasından sonra silinirler. Ayarlar, birden çok PC cihazında kalıcı olmaz.

Tuş yeniden eşlemeyi etkinleştirmek için Giriş SDK'sını yeni sürüme geçirmeniz gerekmez yeniden eşleme özelliği devre dışı kalır. desteklenmeyen yapılandırma tespit edildiğinde.

Giriş yeniden eşleme deneyimini veya yeniden eşleme özelliğini kontrol etmek istiyorsanız oyununuzda devre dışı bırakılmışsa şu 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 öğenizi 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ı yeniden eşleme özelliğini InputAction uyarınca yeniden eşleyemez ve devre dışı bırakamaz. InputGroup veya InputMap.

Yükseltme yaparken 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 çok 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 geçersizdir.

  • İki veya daha fazla InputAction ya da InputGroup nesnesi aynı olamaz benzersiz kimlik.

GirişBağlamı ile Tanışın

InputContext, bir oyunun şurada farklı işlemler için aynı anahtarı kullanmasına izin verir: tutarlı bir şekilde sunmanızı sağlar. Bu şekilde, oyunda zıplamak için boşluk Menü seçimini onaylamak için oyuncular oyun sırasında menülere girmek için boşluk'u tek tek yeniden eşleyin ve Oyun sırasında boşluk tuşuna basarak yukarı oka basın.

Aşağıdaki sıra şemasında setInputContext() API'nin nasıl çalıştığı gösterilmektedir çalışma zamanı:

Tuşlar yeniden eşlenirken Giriş SDK'sının akışını gösteren şema.

Yükselt

Giriş SDK'sının önceki uygulamalarını kullanan oyunlar hâlâ desteklenmektedir kullanmadıkları sürece temel yeniden eşleme desteklenmeyen yapılandırma. Oyununuzda için giriş SDK'sının eski sürümünü kullanıyorsanız 0.0.4'ten 1.0.0-beta'ya yükseltme kılavuzu.

1.1.0-beta sürümüne yükselterek aşağıdakiler gibi yeni özellikleri kullanabilirsiniz:

  • Bağlam değişikliklerini tetikleme.
  • Önemli eşleme etkinlikleri için bildirim alma
  • İşlem, Grup, Bağlam veya Harita başına yeniden eşlemeyi devre dışı bırakma.

Kurulum

Unity eklentisi v1.1.0-beta sürümünü kullanabilirsiniz. Mevcut önerileri silme sürümünüzde yüklü Giriş SDK'sının önceki sürümlerini kullanabilir ve güncel sürüm var.

Giriş SDK'sı v1.1.0-beta sürümünü oyununuza eklemek için şuraya bakın: SDK'yı ekleme.

Statik alanları tanımlayın

1.1.0-beta sürümünde InputActions, hedef EBM veya InputGroups, InputContexts ve InputMap InputMappingProvider class, çünkü bu alanlara diğer bazı bölümleri kapsıyor:

#if PLAY_GAMES_PC
using Java.Lang;
using Java.Util;
using Google.Android.Libraries.Play.Games.Inputmapping;
using Google.Android.Libraries.Play.Games.Inputmapping.Datamodel;

public class InputSDKMappingProvider : InputMappingProviderCallbackHelper
{
    public static readonly string INPUT_MAP_VERSION = "1.0.0";

    private static readonly InputAction driveInputAction =
            InputAction.Create(...);
    private static readonly InputGroup roadInputGroup = InputGroup.Create(...);
    public static readonly InputContext roadControlsContext =
            InputContext.Create(...);
    public static readonly InputMap inputMap = InputMap.Create(...);

    public override InputMap OnProvideInputMap()
    {
        return inputMap;
    }
}
#endif

Giriş Eylemlerinizi güncelleme

InputAction.create() için giriş SDK'sı 1.0.0-beta yöntemi: desteği sonlandırıldı. InputAction, sürüm tanımlayıcısına sahiptir 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

var driveAction = PlayInputAction.Create(
    "Drive",
    (long)InputEventIds.DRIVE,
    PlayInputControls.Create(
        new[] { AndroidKeyCode.KEYCODE_SPACE },
        new List<PlayMouseAction>()
    )
);

Giriş SDK'sı 1.1.0-beta'da Giriş İşlemi

private static readonly InputAction driveInputAction = InputAction.Create(
    "Drive",
    (long)InputEventIds.DRIVE,
    InputControls.Create(
        new[] { new Integer(AndroidKeyCode.KEYCODE_SPACE) }.ToJavaList(),
        new ArrayList<Integer>()),
    InputEnums.REMAP_OPTION_ENABLED
);

Giriş SDK'sı 1.1.0-beta'da Giriş İşlemi (sürüm dizesiyle)

private static readonly InputAction driveInputAction = InputAction.Create(
    "Drive",
    InputControls.Create(
        new[] { new Integer(AndroidKeyCode.KEYCODE_SPACE) }.ToJavaList(),
        new ArrayList<Integer>()),
    InputIdentifier.Create(
        INPUT_MAP_VERSION, (long)InputEventIds.DRIVE),
    InputEnums.REMAP_OPTION_ENABLED
);

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. Tıpkı 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:

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

var gameInputGroup = PlayInputGroup.Create(
    "Road controls",
    new List<PlayInputAction>
    {
        driveAction,
        turboAction,
        openGarageAction,
        openPgsAction,
        openStoreAction
    }
);

Giriş SDK'sı 1.1.0-beta'da Giriş Grubu

private static readonly InputGroup roadInputGroup = InputGroup.Create(
    "Road controls",
    new[]
    {
        driveInputAction,
        turboInputAction,
        openGarageInputAction,
        openPgsInputAction,
        openStoreInputAction,
    }.ToJavaList(),
    (long)InputGroupsIds.ROAD_CONTROLS,
    // All input actions of this group will be remappable unless specified
    // the contrary by the individual input actions.
    InputEnums.REMAP_OPTION_ENABLED
);

Giriş SDK'sı 1.1.0-beta'da Giriş Grubu (sürüm dizesiyle)

private static readonly InputGroup roadInputGroup = InputGroup.Create(
    "Road controls",
    new[]
    {
        driveInputAction,
        turboInputAction,
        openGarageInputAction,
        openPgsInputAction,
        openStoreInputAction,
    }.ToJavaList(),
    InputIdentifier.Create(
        INPUT_MAP_VERSION, (long)InputGroupsIds.ROAD_CONTROLS),
    // All input actions of this group will be remappable unless specified
    // the contrary by the individual input actions.
    InputEnums.REMAP_OPTION_ENABLED
);

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() için 1.0.0-beta Giriş SDK'sı yöntemi kullanıldı 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ı

var gameInputMap = PlayInputMap.Create(
    new List<PlayInputGroup>
    {
        gameInputGroup,
        menuInputGroup
    },
    PlayMouseSettings.Create(false, false)
);

Giriş SDK'sı 1.1.0-beta'da Giriş Haritası


public static readonly string INPUT_MAP_VERSION = "1.0.0";
public static readonly long INPUT_MAP_ID = 0;

public static readonly InputMap inputMap = InputMap.Create(
    new[] { roadInputGroup, menuInputGroup }.ToJavaList(),
    MouseSettings.Create(false, false),
    InputIdentifier.Create(INPUT_MAP_VERSION, INPUT_MAP_ID),
    // Use ESC as reserved key
    InputEnums.REMAP_OPTION_ENABLED,
    new[]
    {
        InputControls.Create(new[]
        {
            new Integer(AndroidKeyCode.KEYCODE_ESCAPE)
        }.ToJavaList(),
        new ArrayList<Integer>())
    }.ToJavaList()
);

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.