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

Bu kılavuzda, oyununuzu Unity için 1.0'dan 1.1 Giriş SDK'sına nasıl yükselteceğiniz açıklanmaktadır. Java ve Kotlin talimatları için burayı tıklayın.

Sürüm Notları

PC Üzerinde Google Play Games, oyununuzun Giriş SDK'sı kullanarak sağladığı tuş bağlamalarına bağlı olarak klavye denetimlerinin yeniden eşlenmesini destekler.

Kullanıcılar bu özelliğe, yer paylaşımını açıp kontrolleri seçerek ve ardından yeniden eşlemek istedikleri işlemi tıklayarak erişirler.

PC Üzerinde Google Play Games, kullanıcı tarafından yeniden eşlenen her girişi oyununuzun varsayılan girişine eşler. Bu şekilde, oyununuzun oyuncunun yeniden eşlendiğinden haberdar olması gerekmez. Oyun içi bir işlem için yeni girişi bilmeniz gerekiyorsa (ör. oyununuzdaki klavye kontrollerini görüntülemek), etkinlikleri yeniden eşlediğimizde bildirim almak üzere isteğe bağlı bir geri çağırma kaydı yapabilirsiniz.

PC Üzerinde Google Play Games, oyun oturumlarında kalıcı olması için kullanıcıların yeniden eşlenen kontrollerini yerel olarak depolar. Bu ayarlar yerel olarak depolandığı için mobil deneyimi etkilemez ve PC Üzerinde Google Play Games kaldırıldıktan sonra silinir. Ayarlar, birden fazla PC cihazında kalıcı olmaz.

Oyununuzda anahtar yeniden eşlemeyi etkinleştirmek için Giriş SDK'sını yükseltmeniz gerekmez ancak desteklenmeyen bir yapılandırma algılanırsa oyununuzda yeniden eşleme devre dışı bırakılır.

Giriş yeniden eşleme deneyimini kontrol etmek istiyorsanız veya oyununuzda yeniden eşleme özelliği devre dışıysa şu adımları uygulayın:

  • Giriş SDK'sı 1.1.0-beta sürümüne geçin.
  • Desteklenmeyen yapılandırmalardan kaçınmak için tüm tuş bağlamalarını güncelleyin.
  • Yeniden eşleme özelliğini etkinleştir olarak ayarlamak için InputMap cihazınızı güncelleyin.

Anahtar bağlamalarınızın salt okunur sürümünü göstermeye devam ederken oyununuzda yeniden eşleme özelliğini devre dışı bırakmak istiyorsanız aşağıdaki adımları uygulayın:

  • Giriş SDK'sı 1.1.0-beta sürümüne geçin.
  • Yeniden eşleme özelliğini devre dışı olarak ayarlamak için InputMap öğenizi güncelleyin.

PC Üzerinde Google Play Games'deki gelişmiş yeniden eşleme özelliklerinden yararlanmak için Giriş SDK'sı sürümünüzü 1.1.0-beta sürümüne yükseltebilirsiniz. Bunun için InputContexts uygulamasını kullanarak oyununuzun farklı sahneleri için kontroller tanımlayabilir, yeniden eşlenen etkinlikleri dinlemek için geri çağırmalar ekleyebilir, kullanıcının InputAction, InputGroup veya InputMap uyarınca yeniden eşleme özelliğini devre dışı bırakabilir ve yeniden eşleme özelliğini devre dışı bırakabilirsiniz.

Geçiş 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:

  • Çoklu anahtar kullanan bir InputAction, değiştirici ve değiştirici olmayan bir tuştan oluşmalıdır. Örneğin, Üst Karakter + A geçerlidir ancak A + B, Ctrl + Alt ve Üst Karakter + A + Sekme geçersizdir.

  • İki veya daha fazla InputAction veya InputGroup nesnesi aynı benzersiz kimliği paylaşamaz.

InputContext ile tanışın

InputContext, bir oyunun çakışma olmadan oyununuzdaki farklı işlemler için aynı anahtarı kullanmasına olanak tanır. Bu şekilde, bir oyun oyun sırasında zıplamak ve menü seçimini onaylamak için boşluk kullanırsa, oyuncular oyun sırasında menülere girmek için boşluk, oyun sırasında yukarı ok ile boşluk arasında tek tek yeniden eşleştirebilirler.

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

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

Yeni sürüme geç

Giriş SDK'sının önceki uygulamalarını kullanan oyunlar, desteklenmeyen bir yapılandırma kullanmadıkları sürece temel yeniden eşlemeyi desteklemektedir. Oyununuz Giriş SDK'sının eski bir sürümünü kullanıyorsa 0.0.4'ten 1.0.0-beta'ya yükseltme kılavuzunu okumayı düşünün.

1.1.0 beta sürümüne yükseltme aşağıdaki gibi yeni özellikleri sağlar:

  • Bağlam değişiklikleri tetikleniyor.
  • Önemli eşleme etkinlikleriyle ilgili bildirim alma
  • İşlem, Grup, Bağlam veya Harita'ya göre yeniden eşleme devre dışı bırakılıyor.

Kurulum

Unity eklentisi v1.1.0-beta sürümünü kullanabilirsiniz. Giriş SDK'sının oyununuzda yüklü olan önceki sürümlerini silmeniz ve geçerli sürüme yükseltmeniz gerekir.

Giriş SDK'sı v1.1.0-beta sürümünü oyununuza eklemek için SDK'yı ekleme bölümüne bakın.

Statik alanları tanımlama

1.1.0-beta sürümünde InputActions, InputGroups, InputContexts ve InputMap alanlarını uygulamanızın diğer bölümlerinden erişilebileceğinden InputMappingProvider sınıfınızın statik alanları olarak tanımlamak iyi bir uygulamadır:

#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ş İşlemlerinizi güncelleme

1.0.0-beta giriş SDK'sının InputAction.create() yöntemi kullanımdan kaldırıldı. InputAction, sürüm tanımlayıcısına sahiptir ve yeniden eşlenebilir veya değil olarak işaretlenebilir. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan InputAction, varsayılan olarak yeniden eşlenebilir ve sürüm oluşturma bilgileri içermez:

Giriş SDK'sı 1.0.0-beta sürümündeki InputAction

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

Giriş SDK'sı 1.1.0-beta sürümündeki InputAction

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 sürümündeki InputAction (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ü belirleme hakkında daha fazla bilgi için İzleme anahtarı kimlikleri bölümüne bakın.

Giriş Gruplarınızı güncelleme

Giriş SDK'sı 1.1.0-beta'nde her bir InputGroup öğesini benzersiz şekilde tanımlamanız gerekir. Her InputAction, ilgili işlemlerden oluşan bir InputGroup koleksiyonuna aittir. Bu, oyun sırasında gezinmeyi ve kontrollerin keşfedilmesini iyileştirir. InputAction öğesinin tek bir InputContext içindeki tüm işlemler arasında benzersiz bir tanımlayıcıya sahip olması gerektiği gibi, InputGroup de mevcut gruplar arasında benzersiz bir kimliğe sahip olmalıdır.

Bu bölümdeki örneklerde, bir oyunda ana menüyü ve oynanabilirliği temsil eden iki InputContext nesnesi bulunur. Bu bağlamlarda her InputGroup için uygun kimlikler aşağıdaki numaralandırma kullanılarak izlenir:

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 kullanımdan kaldırılmıştır. Oyununuzda InputGroup öğenizi, gruplarınızdaki InputAction nesnelerinin yeniden eşlenebilir olup olmadığını belirten bir sürüm tanımlayıcısı ve boole ile güncellemeniz gerekir. Kullanımdan kaldırılan Giriş SDK'sı 1.0.0-beta create() yöntemi ile oluşturulan gruplar yeniden eşlenebilir durumdadır, kimliği 0'dır ve sürüm kimliği boş bir dizedir (""):

Giriş SDK'sı 1.0.0-beta içindeki InputGroup

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

Giriş SDK'sı 1.1.0-beta sürümündeki InputGroup

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'daki InputGroup (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ü belirleme hakkında daha fazla bilgi için İzleme anahtarı kimlikleri bölümüne bakın.

Harf Çevirme Aracınızı güncelleme

1.0.0-beta Giriş SDK'sının InputMap.create() yöntemi kullanımdan kaldırıldı. Sürüm tanımlayıcısı atamak, yeniden eşleme özelliğini tamamen devre dışı bırakmak veya oyununuz için kullanıcı tarafından yeniden eşlemek için kullanılmasını istemediğiniz ayrılmış anahtarların listesini atamak amacıyla InputMap cihazınızı güncelleyin. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan her InputMap varsayılan olarak yeniden eşlenebilir, 0 kimliğiyle tanımlanır ve ayrılmış anahtarı yoktur.

Giriş SDK'sı 1.0.0-beta içindeki InputMap

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

Giriş SDK'sı 1.1.0-beta içindeki InputMap


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?

InputContexts ile farklı sahneler için farklı kontroller atayarak veya InputRemappingListeners etkinliklerini yeniden eşlemeyle ilgili bildirim alarak oyununuzun kullanıcı arayüzünü güncelleyerek 1.1.0 Beta sürümüne yükseltme işlemine devam edin.

Tuş bağlamalarınızı güncellerken anahtar bağlamalarınızı tasarlamayla ilgili en iyi uygulamalara göz atın ve yeniden eşleme özelliğinin kısıtlamalarını ve sınırlamalarını göz önünde bulundurun.