Z tego przewodnika dowiesz się, jak zaktualizować grę z pakietu SDK 1.0 na Unity. Kliknij tutaj instrukcji dotyczących Javy i Kotlina.
Informacje o wersji
Gry Google Play na PC obsługują przemapowanie sterowania za pomocą klawiatury na powiązaniach kluczy, które dostarcza gra za pomocą pakietu SDK danych wejściowych.
Aby uzyskać dostęp do tej funkcji, należy otworzyć nakładkę, wybierając ustawienia. a potem kliknij działanie, którego przypisanie chcesz zmienić.
Gry Google Play na PC mapują wszystkie dane wprowadzone przez użytkownika na domyślne ustawienia gry dane wejściowe. Dzięki temu gra nie musi pamiętać o mapowaniu graczy. Jeśli musisz znać nowy typ danych wejściowych dla działania w grze. Na przykład sterowanie za pomocą klawiatury możesz opcjonalnie zarejestrować wywołanie zwrotne powiadomienia o ponownym mapowaniu zdarzeń.
Gry Google Play na PC zapisują lokalnie przeniesione elementy sterujące użytkownika. w przypadku różnych sesji gier. Te ustawienia są przechowywane lokalnie, więc nie są wpływają na wygodę korzystania z urządzenia mobilnego i są usuwane po odinstalowaniu Gier Google Play na PC. Ustawienia nie są zachowywane na wielu komputerach.
Nie musisz uaktualniać pakietu SDK danych wejściowych, aby włączyć ponowne mapowanie kluczy gry, ale ponowne mapowanie będzie wyłączone, jeśli wykryto nieobsługiwaną konfigurację.
Jeśli chcesz kontrolować działanie funkcji ponownego mapowania danych wejściowych lub funkcji ponownego mapowania danych wejściowych Usługa jest wyłączona w Twojej grze, wykonaj te czynności:
- Uaktualnij pakiet SDK do wejścia
1.1.0-beta
. - Zaktualizuj powiązania klawiszy, aby uniknąć nieobsługiwane konfiguracje.
- Zaktualizuj urządzenie
InputMap
, aby włączyć funkcję ponownego mapowania.
Jeśli chcesz zrezygnować z funkcji ponownego mapowania gry, jeśli wyświetlasz wersję powiązań kluczy tylko do odczytu, wykonaj te czynności:
- Uaktualnij pakiet SDK do wejścia
1.1.0-beta
. - Zaktualizuj urządzenie
InputMap
, aby wyłączyć funkcję ponownego mapowania.
Możesz uaktualnić swoją wersję pakietu SDK wejścia do wersji 1.1.0-beta
,
możesz korzystać z zaawansowanych funkcji ponownego mapowania w Grach Google Play na PC przy użyciu
InputContexts
, aby określić elementy sterujące różnych scen w grze, dodaj
wywołań zwrotnych, aby nasłuchiwać zdarzeń ponownego mapowania, zdefiniować zbiór zarezerwowanych kluczy, które
użytkownik nie może zmienić mapowania i wyłączyć funkcji ponownego mapowania na InputAction
,
InputGroup
lub InputMap
.
Podczas uaktualniania weź pod uwagę te wyjątki:
Nieobsługiwane konfiguracje
Ponowne mapowanie danych wejściowych jest wyłączone, jeśli nie są spełnione te warunki:
Element
InputAction
, który używa wielu klawiszy, musi zawierać modyfikator i niemodyfikatorowi. Na przykładShift + A jest prawidłowy, aleA + B ,Ctrl + Alt orazShift + A + Tab są nieprawidłowe.Co najmniej 2 obiekty
InputAction
lubInputGroup
nie mogą mieć tego samego unikalny identyfikator.
Przedstawiamy elementinputContext
InputContext
pozwala grze używać tego samego klucza w różnych działaniach
bez zakłóceń. Dzięki temu, jeśli gra wykorzystuje miejsce do skakania,
podczas rozgrywki, a także w celu potwierdzenia wyboru menu,
pojedynczo zmieniać położenie
Poniższy diagram sekwencji pokazuje, jak działa interfejs API setInputContext()
.
środowisko wykonawcze:
Uaktualnij
Gry, które korzystały z wcześniejszych implementacji pakietu SDK wejścia, nadal będą obsługiwać tę funkcję. podstawowego mapowania, chyba że funkcja nieobsługiwana konfiguracja. Jeśli gra korzysta z starszej wersji pakietu SDK wejścia, zapoznaj się z przewodnika po uaktualnieniu z wersji 0.0.4 do wersji 1.0.0-beta.
Uaktualnienie do wersji 1.1.0 beta umożliwia korzystanie z nowych funkcji, takich jak:
- Wywoływanie zmian kontekstu.
- Otrzymywanie powiadomień o kluczowych zdarzeniach mapowania
- Wyłączenie ponownego mapowania akcji, grupy, kontekstu lub mapy.
Instalacja
Możesz użyć wtyczki Unity w wersji 1.1.0-beta. Musisz usunąć wszystkie starszych wersji pakietu SDK wejścia, zainstalowanych w grze i aktualizacji bieżącej wersji.
Aby dodać do gry pakiet SDK wejściowych w wersji 1.1.0 (beta), zapoznaj się z artykułem Dodaję pakiet SDK.
Zdefiniuj pola statyczne
W wersji 1.1.0-beta warto zdefiniować InputActions
,
InputGroups
, InputContexts
i InputMap
jako pola statyczne
InputMappingProvider
, ponieważ te pola będą dostępne z innych źródeł
części aplikacji:
#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
Zaktualizuj wprowadzone działania
Metoda InputAction.create()
pakietu SDK wejściowego 1.0.0-beta
to
wycofane. Element InputAction
ma identyfikator wersji i można go oznaczyć jako
lub nie. InputAction
zdefiniowany za pomocą wejściowego pakietu SDK
Metoda 1.0.0-beta
create()
jest domyślnie wykorzystywana ponownie i nie ma obsługi wersji
informacje:
Wejściowe działanie w pakiecie SDK wejścia w wersji 1.0.0 (beta)
var driveAction = PlayInputAction.Create(
"Drive",
(long)InputEventIds.DRIVE,
PlayInputControls.Create(
new[] { AndroidKeyCode.KEYCODE_SPACE },
new List<PlayMouseAction>()
)
);
Wejściowe działanie w pakiecie SDK wejścia w wersji 1.1.0 (beta)
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
);
Wejściowe działanie w pakiecie SDK danych wejściowych w wersji 1.1.0-beta (z ciągiem znaków wersji)
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
);
Więcej informacji o obsłudze wersji powiązań kluczy znajdziesz w artykule Identyfikatory kluczy śledzenia.
Zaktualizuj grupy wejściowe
W pakiecie SDK wejściowych 1.1.0-beta
musisz jednoznacznie zidentyfikować każdy
InputGroup
Każdy element InputAction
należy do elementu InputGroup
– zbioru
powiązanych działań. Ułatwi to nawigację i wykrywalność elementów sterujących.
podczas rozgrywki. Tak samo jak InputAction
musi mieć unikalny identyfikator
wśród wszystkich działań w pojedynczym elemencie InputContext
, InputGroup
musi mieć
unikalny identyfikator w istniejących grupach.
W przykładach w tej sekcji gra ma 2 obiekty InputContext
które reprezentują menu główne i rozgrywkę. Przy każdym z nich śledzone są odpowiednie identyfikatory
InputGroup
w tych kontekstach przy użyciu następującego wyliczenia:
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
}
Metoda InputGroup.create()
pakietu SDK wejścia, tak samo jak InputAction
Usługa 1.0.0-beta
została wycofana. Musisz zaktualizować: InputGroup
w grze
z identyfikatorem wersji i wartością logiczną, która wskazuje, czy InputAction
obiekty w grupach można mapować ponownie. Grupy utworzone za pomocą wycofanej metody pakietu SDK wejścia 1.0.0-beta
create()
można przypisywać ponownie i mają identyfikator 0.
a identyfikator wersji jest pustym ciągiem znaków (""
):
Wejściowa grupa w pakiecie SDK do wprowadzania danych w wersji 1.0.0 (beta)
var gameInputGroup = PlayInputGroup.Create(
"Road controls",
new List<PlayInputAction>
{
driveAction,
turboAction,
openGarageAction,
openPgsAction,
openStoreAction
}
);
Wejściowa grupa w pakiecie SDK do wprowadzania danych w wersji 1.1.0 (beta)
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
);
Wejściowa grupa w pakiecie SDK danych wejściowych w wersji 1.1.0-beta (z ciągiem znaków wersji)
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
);
Więcej informacji o obsłudze wersji powiązań kluczy znajdziesz w artykule Identyfikatory kluczy śledzenia.
Zaktualizuj Twoją mapę wejściową
Metoda InputMap.create()
pakietu SDK wejściowego 1.0.0-beta
została
wycofane. Zaktualizuj urządzenie InputMap
, aby przypisać identyfikator wersji; zrezygnuj
całkowicie z funkcji ponownego mapowania lub przypisz listę zarezerwowanych kluczy
która nie powinna być używana do ponownego mapowania. Co tydzień – InputMap
zdefiniowane za pomocą metody 1.0.0-beta
create()
pakietu SDK wejściowego to
domyślnie możliwy do ponownego przypisania, ma identyfikator 0
i nie ma żadnych
zarezerwowane klucze.
wejściowego pakietu SDK w wersji 1.0.0 beta,
var gameInputMap = PlayInputMap.Create(
new List<PlayInputGroup>
{
gameInputGroup,
menuInputGroup
},
PlayMouseSettings.Create(false, false)
);
wejściowego pakietu SDK w wersji 1.1.0 beta,
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()
);
Co dalej
Kontynuuj uaktualnianie wersji beta do wersji 1.1.0 do
Przypisywanie różnych elementów sterujących do różnych scen
za pomocą InputContexts
lub aktualizując interfejs gry przez
Otrzymywanie powiadomień o remapowaniu zdarzeń za pomocą
InputRemappingListeners
.
Podczas aktualizowania powiązań kluczy spójrz na Sprawdzone metody projektowania powiązań kluczy oraz wziąć pod uwagę ograniczenia ograniczenia funkcji ponownego mapowania.