Integració de l'Input System de Unity
Un gateway de player input que encamina les accions de l'Input System de Unity a menús, gameplay i navegació d'UI a través de serveis nets.
Per a què serveix aquest sistema
L'input a Unity ha millorat molt amb el paquet Input System, però cada projecte segueix escrivint el mateix codi de connexió. Components PlayerInput, action assets, lògica de join, navegació d'UI i accions de gameplay s'han de posar d'acord sobre quin dispositiu és primari, quin jugador ocupa quin slot i quina pantalla mana en l'input a cada moment.
L'Input Gateway de Serenity centralitza aquest encaminament. Exposa serveis tipats per a player input, comportament de join i encaminament d'UI, i evita que menús, gameplay i join multijugador es trepitgin entre si.
El problema a Unity
Un projecte Unity petit pot sortir-se'n amb un únic component PlayerInput. Un de real, no. El menú d'ajustos ha d'acceptar input fins i tot amb el gameplay pausat. La navegació d'UI ha de funcionar amb gamepad a més de teclat i ratolí. El modal de pausa no ha de deixar passar accions de gameplay. El join multijugador necessita un moment definit perquè nous dispositius entrin en la sessió i un altre definit per rebutjar-los. Res d'això es resol de sèrie.
Sense una capa d'encaminament, aquestes preocupacions es responen a mida a cada escena. El resultat són bugs d'input que només apareixen en dispositius concrets, en menús concrets o en transicions concretes entre gameplay i UI.
Com ho aborda Serenity
Serenity exposa l'input a través d'IPlayerInputService i IPlayerInputJoinService per a player input i comportament de join, IUiInputRouter per encaminar input d'UI, IPrimaryDeviceSelector per seguir quin dispositiu és primari i IPrimaryInputGate per obrir o tancar el flux d'input primari. Els slots de jugador els modelen IPlayerInputSlots i PlayerInputSlot, amb PrimaryJoinInfo descrivint l'estat de join.
El comportament es configura mitjançant enums com InputDeviceKind, PlayerInputJoinBehavior i PlayerInputUiInteractionMode, a més d'interfícies d'ajustos IPlayerInputServiceSettingsDefinition, IPlayerInputRoutingSettings, IPlayerInputDeviceFilterSettings i IPlayerInputJoinGateSettings. Les factories donen punts de creació perquè la implementació Unity es pugui substituir.
Com encaixa a Serenity
Input Gateway viu al namespace Serenity.InputGateway i segueix l'estructura per capes de la foundation. La capa de Domini defineix enums, interfícies i structs. La capa d'Aplicació exposa els serveis i les interfícies de factoria. Els ajustos per a join, encaminament i filtratge de dispositiu viuen darrere d'interfícies dedicades perquè la implementació pugui canviar sense tocar els consumidors.
Input Gateway coopera estretament amb el Sistema de Menús per a la navegació amb gamepad i teclat, amb el Sistema de Modals per obrir i tancar input quan hi ha un modal a la pantalla, amb Game Mode perquè el mode actiu influeixi en l'encaminament i amb l'Event Dispatcher per a qualsevol senyal relacionada amb input que el projecte decideixi publicar.
Flux de treball pràctic
- Configura el teu asset d'Input Actions de Unity com de costum i assigna'l al projecte.
- Configura els ajustos del player input service per definir encaminament i comportament de join.
- Decideix quin mode d'interacció d'UI s'aplica mitjançant PlayerInputUiInteractionMode.
- Deixa que l'instal·lador de l'input registri els serveis a la pipeline d'inicialització.
- Fes servir IUiInputRouter des de menús i modals perquè rebin input només quan toca.
- Fes servir IPlayerInputJoinService per acceptar o rebutjar dispositius que s'uneixen a la sessió.
Què inclou
- Servei de player input IPlayerInputService i servei de join IPlayerInputJoinService
- Encaminador d'input d'UI IUiInputRouter per a encaminament conscient de la pantalla
- Selector de dispositiu primari IPrimaryDeviceSelector i porta d'input primari IPrimaryInputGate
- Slots de jugador i info de join descrits mitjançant IPlayerInputSlots i PrimaryJoinInfo
- Enums configurables InputDeviceKind, PlayerInputJoinBehavior i PlayerInputUiInteractionMode
- Interfícies d'ajustos per a encaminament, filtratge de dispositiu i gating de join
- Factories que mantenen la implementació Unity reemplaçable
- Integració amb menús, modals i game mode a través de senyals compartides
Quan fer-lo servir
- Projectes que necessiten que la navegació de menús i l'input de gameplay es gestionin de manera coherent entre dispositius.
- Jocs que suporten gamepad, teclat i ratolí i necessiten un encaminament net entre ells.
- Projectes multijugador que necessiten un comportament de join definit i slots de jugador.
- Bases de codi que volen que l'input es controli per la pantalla actual o el mode de joc en lloc de per booleans ad hoc.
Sistemes relacionats
Utilitza Serenity quan vulguis un encaminament d'input que ja parla amb menús, modals i game mode, però que et segueix deixant mantenir el teu propi asset d'Input Actions com a única font de veritat.
English
Español
Català