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-beta
sü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
InputMap
cihazı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-beta
sü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
InputAction
ya daInputGroup
nesnesi 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.