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 ancakA + B ,Ctrl + Alt veÜst Karakter + A + Sekme geçersizdir.İki veya daha fazla
InputAction
veyaInputGroup
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
Aşağıdaki sıra şeması, setInputContext()
API'nin çalışma zamanında nasıl çalıştığını gösterir:
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.