Bu kılavuzda, oyununuzu Unity için 1.0 sürümünden 1.1 sürümüne 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ını kullanarak sağladığı tuş bağlamalarına göre klavye kontrollerinin yeniden haritalanmasını destekler.
Kullanıcılar bu özelliğe yer paylaşımını açıp kontrolleri seçerek erişebilir ve ardından yeniden eşlemek istedikleri işlemi tıklayabilir.
PC Üzerinde Google Play Games, kullanıcı tarafından yeniden eşlenen her girişi oyununuzun varsayılan girişiyle eşler. Bu sayede oyununuzun, oyuncunun yeniden eşlemesini bilmesi gerekmez. Oyun içi bir işlem için yeni girişi bilmeniz gerekiyorsa (ör. oyununuzda klavye kontrollerini görüntüleme) isteğe bağlı olarak yeniden eşleme etkinlikleri hakkında bildirim almak için geri çağırma işlevi kaydedebilirsiniz.
PC Üzerinde Google Play Games, oyun oturumları boyunca kalıcı olması için kullanıcının yeniden eşlenen kontrollerini yerel olarak depolar. Bu ayarlar yerel olarak depolandığından mobil deneyimi etkilemez ve PC'de Google Play Games'in kaldırılmasıyla silinir. Ayarlar birden fazla PC cihazında saklanmaz.
Oyununuzda tuş yeniden eşlemeyi etkinleştirmek için Giriş SDK'sını yükseltmeniz gerekmez. Ancak desteklenmeyen bir yapılandırma algılanırsa oyununuz için yeniden eşleme devre dışı bırakılır.
Giriş yeniden eşleme deneyimini kontrol etmek istiyorsanız veya yeniden eşleme özelliği oyununuzda devre dışıysa aşağıdaki adımları uygulayın:
- Giriş SDK'sı
1.1.1-betasürümüne geçin. - Desteklenmeyen yapılandırmaları önlemek için tuş bağlamalarını güncelleyin.
- Yeniden eşleme özelliğini etkin olarak ayarlamak için
InputMapcihazınızı güncelleyin.
Tuş bağlamalarınızın salt okunur sürümünü görüntülemeye devam ederken oyununuzun yeniden eşleme özelliğini devre dışı bırakmak istiyorsanız şu adımları uygulayın:
- Giriş SDK'sı
1.1.1-betasürümüne geçin. - Yeniden eşleme özelliğini devre dışı olarak ayarlamak için
InputMapöğenizi güncelleyin.
Oyununuzun farklı sahnelerine yönelik kontrolleri tanımlamak, yeniden eşleme etkinliklerini dinlemek için geri çağırmalar eklemek, kullanıcının yeniden eşleyemeyeceği bir dizi ayrılmış tuş tanımlayıp InputAction, InputGroup veya InputMap uyarınca yeniden eşleme özelliğini devre dışı bırakmak için PC Üzerinde Google Play Games'de gelişmiş yeniden eşleme özelliklerinden yararlanmak üzere giriş SDK'nızın sürümünü 1.1.1-beta sürümüne yükseltebilirsiniz.InputContexts
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 fazla anahtar kullanan bir
InputAction, bir değiştirici ve değiştirici olmayan anahtardan oluşmalıdır. Örneğin,Üst Karakter + A geçerlidir ancakA + B ,Ctrl + Alt veÜst Karakter + A + Sekme geçersizdir.İki veya daha fazla
InputActionya daInputGroupnesnesi aynı benzersiz kimliği paylaşamaz.
InputContext ile tanışın
InputContext, oyununuzda farklı işlemler için aynı anahtarı çakışma olmadan kullanmasına olanak tanır. Böylece, bir oyun oyun sırasında zıplamak ve menü seçimini onaylamak için alan kullanırsa oyuncular
Aşağıdaki ardışık düzen şeması, setInputContext() API'nin çalışma zamanında nasıl çalıştığını gösterir:

Yükselt
Giriş SDK'sının önceki uygulamalarını kullanan oyunlar, desteklenmeyen bir yapılandırma kullanmadıkları sürece temel yeniden eşlemeyi desteklemeye devam eder. Oyununuzda Input SDK'sının eski bir sürümü kullanılıyorsa 0.0.4'ten 1.0.0-beta sürümüne yükseltme kılavuzunu okuyabilirsiniz.
1.1.1-beta sürümüne yükselterek aşağıdakiler gibi yeni özellikleri kullanabilirsiniz:
- Bağlam değişikliklerini tetikleme.
- Anahtar eşleme etkinlikleriyle ilgili bildirim alma
- İşlem, grup, bağlam veya harita başına yeniden eşlemeyi devre dışı bırakma.
Kurulum
Unity eklentisi 1.1.1-beta sürümünü kullanabilirsiniz. Oyununuza yüklenen Giriş SDK'sının önceki sürümlerini silmeniz ve mevcut sürüme yükseltmeniz gerekir.
Giriş SDK'sı 1.1.1-beta sürümünü oyununuza eklemek için SDK'yı ekleme bölümüne bakın.
Statik alanları tanımlama
1.1.1-beta sürümü için InputActions, InputGroups, InputContexts ve InputMap alanlarınızı InputMappingProvider sınıfınızın statik alanları olarak tanımlamak iyi bir uygulamadır. Bu alanlara uygulamanızın diğer bölümlerinden erişilebilir:
#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
InputActions öğelerinizi güncelleme
Giriş SDK'sı 1.0.0-beta'nın InputAction.create() yöntemi için destek sonlandırıldı. InputAction öğesinin bir sürüm tanımlayıcısı vardır ve yeniden atanabilir veya atanamaz olarak işaretlenebilir. Giriş SDK'sı 1.0.0-beta create() yöntemi kullanılarak tanımlanan bir InputAction varsayılan olarak yeniden eşlenebilir ve sürüm bilgileri içermez:
Input SDK 1.0.0-beta'da InputAction
var driveAction = PlayInputAction.Create(
"Drive",
(long)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
new List<PlayMouseAction>()
)
);
Giriş SDK'sı 1.1.1-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
);
Input SDK 1.1.1-beta'da InputAction (sürüm dizesi ile)
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
);
Tuş bağlamalarınızı sürümlendirme hakkında daha fazla bilgi için Anahtar kimliklerini izleme başlıklı makaleyi inceleyin.
InputGroups'ınızı güncelleme
Giriş SDK'sı 1.1.1-beta'de her bir InputGroup öğesini benzersiz şekilde tanımlamanız gerekir. Her InputAction, ilgili işlemlerin bir koleksiyonu olan bir InputGroup'a aittir. Bu sayede, oyun esnasında kontrollerde gezinmeyi ve keşfedilebilirliği
iyileştirebilirsiniz. Bir InputAction'ün tek bir InputContext'daki tüm işlemler arasında benzersiz bir tanımlayıcısının olması gerektiği gibi, bir InputGroup'ün mevcut gruplar arasında benzersiz bir kimliği olmalıdır.
Bu bölümdeki örneklerde, bir oyunda ana menüyü ve oynanabilirliği temsil eden iki InputContext nesnesi vardır. Aşağıdaki listeleme kullanılarak bu bağlamlarda her InputGroup için uygun kimlikler 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ı 1.0.0-beta'nin InputGroup.create() yönteminin desteği de sonlandırılmıştır. Oyununuzdaki InputGroup öğesini, bir sürüm tanımlayıcısıyla ve gruplarınızdaki InputAction öğelerinin yeniden atanabilir olup olmadığını belirten bir boole değeriyle güncellemeniz gerekir. 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.1-beta sürümünde 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
);
Input SDK 1.1.1-beta'da InputGroup (sürüm dizesi ile)
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
);
Tuş bağlamalarınızı sürümlendirme hakkında daha fazla bilgi için Anahtar kimliklerini izleme başlıklı makaleyi inceleyin.
InputMap'inizi güncelleme
1.0.0-beta Giriş SDK'sının InputMap.create() yönteminin desteği sonlandırıldı. InputMap sürümünüzü güncelleyerek bir sürüm tanımlayıcısı atayın, yeniden eşleme özelliğini tamamen devre dışı bırakın veya oyununuz için kullanıcı tarafından yeniden eşlemek için kullanılmasını istemediğiniz ayrılmış anahtarların listesini atayın. 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ış anahtarları yoktur.
Input SDK 1.0.0-beta'da InputMap
var gameInputMap = PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
Input SDK 1.1.1-beta'da 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 kullanarak farklı sahneler için farklı kontroller atayın veya InputRemappingListeners kullanarak yeniden eşleme etkinlikleri hakkında bildirim alın ve oyununuzun kullanıcı arayüzünü güncelleyin.
Tuş bağlamalarını güncellerken Tuş bağlamalarınızı tasarlamayla ilgili en iyi uygulamalar başlıklı makaleyi inceleyin ve yeniden eşleme özelliğinin kısıtlamaları ile sınırlamalarını göz önünde bulundurun.