Temes d'UI per a Unity

Temes d'UI basats en ScriptableObject que comparteixen visuals i feedback sonor entre menús, modals i pantalles.

Per a què serveix aquest sistema

Reutilitzar prefabs d'UI a Unity sona bé fins que dues pantalles volen que el mateix botó tingui un aspecte lleugerament diferent. Aleshores els prefabs es dupliquen com a variants, els colors s'ajusten localment, les tipografies deriven i el sistema de disseny abans compartit es fragmenta. El mateix passa amb els sons d'UI: cada botó agafa el seu propi clip de clic fins que els clics sonen diferents a cada pantalla.

El sistema de Temes d'UI de Serenity et permet descriure la personalitat visual i sonora d'una UI com un asset de definició i compartir-la entre menús, modals i altres pantalles.

El problema a Unity

Sense una capa de tema, la coherència d'UI depèn de la disciplina humana. Dissenyadors i desenvolupadors han de recordar fer servir el mateix color, la mateixa tipografia i el mateix so en passar el cursor per sobre. Els projectes reals se n'obliden. Pitjor: quan el tema canvia, els canvis s'han de propagar a mà entre cada variant de prefab.

El feedback sonor és la mateixa història. Clic, hover, confirmació i cancel·lació apareixen en botons individuals i poc a poc van divergint fins que cada pantalla té la seva signatura sonora, sovint per accident.

Com ho aborda Serenity

Serenity descriu els temes d'UI mitjançant IUiThemeDefinition i ho aparella amb dos contractes de component: IUiThemeComponents per als components visuals i IUiThemeSounds per als components d'àudio. El cantó de so té el seu propi contracte de definició IUiThemeSoundsDefinition. Assets específics de Unity com UnityUiThemeDefinition, UnityUiThemeComponents, UnityUiThemeSounds i UnityUiThemeSoundsDefinition implementen aquestes interfícies com a ScriptableObjects.

Un UiThemeValidator i un UnityUiThemeDefinitionEditor suporten el cantó d'editor. Els menús referencien el tema a través de UnityMenuThemeSoundFactory, així que els sons d'UI del menú vénen del tema i no de cada botó.

Com que el tema és un únic asset, reestilitzar l'UI es converteix en un canvi controlat. Edites la definició, els consumidors recullen els nous valors i els prefabs no cal tocar-los. Poden coexistir diversos temes al projecte i l'actiu es pot assignar per build o per mode de joc.

Com encaixa a Serenity

Els Temes d'UI viuen al namespace Serenity.Ui. Les interfícies de Domini defineixen el contracte del tema. La capa d'Infraestructura aporta les implementacions Unity com a ScriptableObject. La capa d'Installation aporta la configuració de l'asset i el suport d'editor, inclòs el validador que detecta referències absents abans del temps d'execució.

Els Temes d'UI connecten amb el Sistema de Menús per a les pantalles de menú, amb el Sistema de Modals per a diàlegs de confirmació i entrada, amb el Reproductor d'àudio perquè els sons d'UI passin pel mateix servei que els de gameplay i amb Localització quan hi ha assets localitzats al tema. Canviar el tema actiu canvia l'aparença i el so de cada consumidor alhora.

La separació entre IUiThemeComponents i IUiThemeSounds és important. Significa que pots canviar la identitat sonora de l'UI sense tocar la visual, i a l'inrevés. Els projectes que envien diversos temes visuals però un únic tema sonor, o a l'inrevés, no han de duplicar-ho tot per mantenir independents els dos eixos.

Flux de treball pràctic

  1. Crea un asset UnityUiThemeDefinition per a la identitat visual i sonora que vulguis.
  2. Configura UnityUiThemeComponents amb els prefabs i referències visuals fets servir per menús i modals.
  3. Configura UnityUiThemeSounds amb els clips de clic, hover, confirmació i cancel·lació.
  4. Executa UiThemeValidator per detectar referències absents durant l'autoria.
  5. Assigna el tema als serveis de menú i modal mitjançant els seus instal·ladors.
  6. Canvia el tema canviant la definició assignada, sense editar prefabs.

Què inclou

  • Contractes de tema IUiThemeDefinition, IUiThemeComponents i IUiThemeSounds
  • Implementacions Unity com a ScriptableObject UnityUiThemeDefinition, UnityUiThemeComponents i UnityUiThemeSounds
  • Contracte de definició de sons IUiThemeSoundsDefinition amb la seva contrapartida Unity
  • Validador de tema UiThemeValidator per detectar errors aviat
  • Suport d'editor mitjançant UnityUiThemeDefinitionEditor
  • UnityMenuThemeSoundFactory connectant els sons del menú a través del tema
  • Integració amb menús, modals, reproducció d'àudio i localització
  • Canvi de tema substituint la definició assignada, no editant prefabs

Quan fer-lo servir

  • Projectes amb més d'una pantalla d'UI que han de compartir visuals i feedback sonor.
  • Equips que volen reestilitzar l'UI sense tocar prefabs individuals.
  • Jocs que necessiten suportar diversos temes, per exemple variants clar i fosc o estilitzat per facció.
  • Bases de codi que es mouen del so i els visuals configurats per botó a alguna cosa compartida.

Sistemes relacionats

Utilitza Serenity quan vulguis una capa de tema d'UI que ja coopera amb menús, modals i àudio, però que et segueix deixant mantenir la teva pròpia identitat visual definida com a assets.

Tornar a la pàgina principal