Sistema de modals per a Unity

Modals de confirmació, avís i entrada reutilitzables, dirigits per senyals tipades i paràmetres compartits.

Per a què serveix aquest sistema

Els modals són una d'aquelles parts d'UI que tothom reinventa. Confirmacions de sortida, reset a valors per defecte, fi de sessió, reiniciar la partida i diàlegs genèrics OK acaben implementats per separat, cadascun amb el seu prefab, els seus callbacks i la seva pròpia manera de retornar el resultat. El codi que obre un modal sol referenciar el prefab directament, cosa que fa impossible canviar l'aspecte sense trencar la capa de joc.

El Sistema de Modals de Serenity descriu el flux com un petit conjunt de senyals i paràmetres. Qualsevol sistema pot demanar un modal llançant una senyal. El servei s'encarrega de la presentació, de la resposta de l'usuari i de l'opció enviada. El codi de joc llegeix un resultat tipat sense saber quin prefab hi ha a la pantalla.

El problema a Unity

Unity no inclou un sistema de modals amb opinió. La majoria de projectes acaba amb un de dos patrons: UnityEvents repartits en un prefab de confirmació o un manager estàtic al qual crida tothom. Tots dos fan que afegir un diàleg nou impliqui duplicar boilerplate i tots dos fiquen detalls de presentació al codi de joc.

Els modals també s'han de coordinar amb la resta de l'UI. Bloquegen l'input de la pantalla del darrere, no han de xocar amb els menús, necessiten localització per als seus textos i el seu estil visual ha d'encaixar amb el tema d'UI actiu. Quan aquesta coordinació és a mida, els modals són on s'acumulen petits bugs d'UX.

Com ho aborda Serenity

Serenity exposa el flux modal com a dades i senyals. Els paràmetres del modal descriuen els botons, els textos i l'opció de destí que el modal ha de presentar. Una vista de modal rep aquests paràmetres, els renderitza a través del tema d'UI actiu i reporta de tornada mitjançant casos d'ús com ModalSelectOption, ModalSubmitOption o ModalCancel. Les intencions modals més comunes són senyals de primer nivell: OnShowModalSignal, OnCloseModalSignal, ShowEndGameSessionModalSignal, ShowExitApplicationModalSignal, ShowRestartGameModalSignal i ShowSetSettingsToDefaultModalSignal.

Això manté el codi que crida lliure de referències a prefabs. Demanar una confirmació és llançar una senyal amb els paràmetres adequats. Llegir el resultat és subscriure's a OnModalSubmitOptionSignal. El prefab del modal i la seva presentació poden canviar sense tocar res més.

Com encaixa a Serenity

El Sistema de Modals viu al namespace Serenity.Modal i reflecteix l'estructura per capes de la resta de la foundation: interfícies de Domini per al contracte del modal, casos d'ús i senyals a la capa d'Aplicació, i la capa d'Infraestructura per al servei Unity, les factories i les vistes. Un instal·lador registra el servei i les factories a la resta del projecte.

Els modals connecten amb diversos sistemes per disseny. Els Temes d'UI dirigeixen l'estil visual i el feedback sonor. Localització gestiona els textos i els botons. L'Event Dispatcher transporta les senyals de mostrar i tancar. El Sistema de Menús fa servir modals per a les confirmacions llançades des de pantalles d'ajustos o pausa. Les senyals de Game Mode poden demanar modals quan una transició necessita confirmació de l'usuari, com acabar una sessió o tornar al menú principal.

Flux de treball pràctic

  1. Decideix quin modal necessites: una confirmació genèrica, una intenció predefinida com sortir de l'aplicació o un modal a mida amb els teus propis paràmetres.
  2. Construeix o reutilitza un objecte de paràmetres amb etiquetes, botons i payload d'opció.
  3. Llança la senyal corresponent, per exemple OnShowModalSignal amb els teus paràmetres o ShowRestartGameModalSignal per a la intenció predefinida.
  4. Deixa que el servei de modal triï la vista a través de la seva factoria i la renderitzi mitjançant el tema d'UI actiu.
  5. Subscriu-te a OnModalSubmitOptionSignal o OnCloseModalSignal per reaccionar a l'elecció del jugador.
  6. Canvia l'estil del modal editant el prefab de vista o el tema, sense tocar el codi que crida.

Què inclou

  • Paràmetres de modal configurables amb etiquetes, botons i payload d'opció
  • Casos d'ús per seleccionar opció, confirmar, canviar valor i cancel·lar
  • Senyals d'intenció predefinides com ShowExitApplicationModalSignal i ShowRestartGameModalSignal
  • Senyals sortints OnShowModalSignal, OnCloseModalSignal i OnModalSubmitOptionSignal
  • Factories de vista, presenter i servei que mantenen la capa visual reemplaçable
  • Integració amb el tema d'UI compartit perquè els modals encaixin amb la resta de la interfície
  • Integració amb Localització per a textos i etiquetes de botons
  • Instal·lador que registra el servei una sola vegada a tot el projecte

Quan fer-lo servir

  • Projectes que necessiten diàlegs coherents de confirmació, avís i entrada entre pantalles.
  • Jocs on els fluxos de fi de sessió, reinici, sortida i reset a valors per defecte han de tenir el mateix aspecte i comportament.
  • Equips que volen dirigir els diàlegs d'UX des del codi de joc sense referenciar prefabs d'UI.
  • Bases de codi que es mouen dels prefabs de confirmació per pantalla a una pipeline de modals compartida.

Sistemes relacionats

Utilitza Serenity quan vulguis fluxos modals ja connectats amb temes, localització i senyals, però que segueixin sent adaptables a la teva pròpia UI.

Tornar a la pàgina principal