Buenas prácticas de LibGDX scene2d

Estoy desarrollando un juego usando LibGDX y en una parte tiene una interfaz de usuario bastante compleja para la selección de perfiles y demás. Tengo algunos problemas generales.

Me gustaría conocer las buenas prácticas cuando genere layouts atractivos usando el Scene2d que viene incluido. Encontré ejemplos en línea, pero generalmente no llegan al nivel de complejidad que requiero. ¿Se recomienda el uso de una table siempre? ¿Cómo puedo establecer las posiciones y anchuras con precisión (he logrado fingir usando almohadillas, pero tiene que haber una mejor manera). Necesitaría algo como posicionamiento absoluto en CSS.

Necesito usar diferentes files de fonts, colors y tamaños, por ejemplo. ¿Cómo puedo hacer eso en la piel y usarlo en mi código?

También necesito diferentes layouts en botones (backgrounds diferentes). ¿Cómo puedo hacer eso?

También por alguna razón, mi text es muy malo. ¿Cómo puedo hacer que se vea nítido?

Gracias por adelantado.

También estoy entrando en libgdx / scene2dui, pero quizás pueda ofrecer algo de ayuda.

Encontré usar tablas bastante prácticas y precisas. También tiene la ventaja del posicionamiento relativo de los objects. No sé sobre CSS, pero ¿por qué usarías un posicionamiento absoluto ?, se estropea si quieres que el juego se pueda reproducir en diferentes relaciones de aspecto y aspecto, y hace que trabajar en tu UI sea muy difícil. Si desea agregar algo, tendrá que mover todo lo demás manualmente.

Usted crea una tabla raíz y le agrega tablas, a las cuales agrega tablas y … finalmente algunas cosas. Cada Objeto en su UI (llamado Widgets: botones, campos de text, tags, imágenes, cualquier actor de extensión de class) necesita un Contenedor. Las tablas son los contenedores con más control sobre el posicionamiento de sus cosas. Entonces, incluso si tienen solo una celda, son una buena opción.

Coloque las cosas especificando table.add (…) con methods de la class Cell.

Por ejemplo: table.add(yetAnotherTable).align(Align.topLeft).expandX().colspan(2) .

También puede establecer el tamaño absoluto de la celda con esto, incluso mejor, puede usar un tamaño mínimo, máximo y preferido.

Para abreviar: no conozco otra forma razonable de hacer una UI en libgdx.

Necesito usar diferentes files de fonts, colors y tamaños, por ejemplo. ¿Cómo puedo hacer eso en la piel y usarlo en mi código?

Como el método void add(java.lang.String name, java.lang.Object resource) sugiere que puede agregar casi todo a un skin y darle un nombre (cadena).

Cuando necesite el recurso puede llamarlo por su nombre con el método apropiado. Una gran ventaja es que te proporciono Drawables para todo lo que se puede convertir en un Drawable llamando a getDrawable(java.lang.String name) , que de otra manera no sería conveniente para algunas classs. Además, puede llamar a disponer () sobre una máscara completa. Simplemente facilita el event handling muchos objects.

También por alguna razón, mi text es muy malo. ¿Cómo puedo hacer que se vea nítido?

¿Usas BitmapFonts y los escalas? Necesita un BitmapFont diferente para cada tamaño. O simplemente almacena los files .ttf en tu carpeta de activos y crea un nuevo BitmapFont con Freetype fontGenerator cada vez que lo necesites.

Mira la wiki en ese