Tengo un Panel que contiene un objeto TextMeshPro (TMP) y algunos otros (botones, por ejemplo) alineados verticalmente. Quiero el siguiente comportamiento:
El tamaño del panel se expande verticalmente a medida que se agrega más texto al TMP o se agregan más elementos (por ejemplo, botones y subimágenes).
A medida que se agrega más texto al TMP, dejamos de expandir el tamaño del Panel y, en su lugar, usamos el desbordamiento (puntos suspensivos o lo que sea).
Entonces debería verse así cuando el texto es largo y así cuando el texto es corto.
Mi configuración actual tiene los componentes Vertical Layout Group y Content Size Fitter en el objeto Panel.
El Grupo de diseño vertical tiene marcado "Controlar tamaño secundario" pero no "Usar escala secundaria" o "Forzar expansión secundaria".
El Ajustador de tamaño de contenido tiene "Tamaño preferido" para el ajuste vertical.
El objeto TMP tiene un componente Elemento de diseño. Si configuro este componente en un tamaño preferido específico, se fija en ese tamaño y, por lo tanto, maneja bien el desbordamiento, pero cuando el contenido del texto es corto, hay toneladas de espacio adicional .
Si desmarco el tamaño preferido del TMP, el objeto TMP se reduce para ajustarse cómodamente a pequeñas cantidades de texto (como yo quiero). Sin embargo, cuando agrego una gran cantidad de texto, sigue creciendo sin límite, y eventualmente ocupa toda la pantalla y más .
¿Hay alguna forma de lograr el comportamiento deseado ajustando la configuración del Elemento de diseño/Ajustador de tamaño de contenido/Grupo de diseño vertical? ¿O tengo que escribir un nuevo componente que active el tamaño preferido para limitar la altura cuando el texto alcanza una cierta longitud?
¡Gracias!
La mejor solución que encontré es agregar un nuevo componente al objeto principal con Content Size Fitter que impone el máximo.
El nuevo componente necesita implementar la interfaz ILayoutSelfController e implementar los métodos SetLayoutHorizontal y SetLayoutVertical . En estos métodos, verifique si las dimensiones X e Y actuales son más grandes que los máximos serializados que configuró en el inspector.
La solución completa, de un usuario de Unity llamado Democide (también conocido como Democritus) está disponible aquí https://forum.unity.com/threads/purpose-of-uibehaviour.289666/