Quiero crear una herramienta similar a la herramienta Terreno de Unity, que tiene algunos botones de alternancia agradables en el inspector:
¿Cómo puedo lograr un diseño similar a este? Sé cómo crear botones normales y otros componentes de la interfaz de usuario en el inspector, pero no puedo encontrar suficiente información para activar o desactivar los botones.
Hasta ahora he usado conmutadores normales que producen una casilla de verificación:
var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue );
if ( tmp != _setValue )
{
_setValue = tmp;
if ( _setValue )
_smoothValue = false;
}
tmp = EditorGUILayout.Toggle( SmoothValueFieldContent, _smoothValue );
if ( tmp != _smoothValue )
{
_smoothValue = tmp;
if ( _smoothValue )
_setValue = false;
}
Establecer la palanca GUIStyle
en "Botón" no produce el resultado deseado. El contenido del texto o la imagen va a la izquierda del botón en lugar de adentro.
var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue, "Button" );
Además, ninguna de las opciones encontradas en GUISkin no parece ayudar.
_smoothValue = !GUILayout.Button( SetAmountFieldContent, _smoothValue ? ToggleButtonStyleToggled : ToggleButtonStyleNormal)
lugar de tener dos booleanos? Eso funciona bien para mí y el código parece estar cerca de usar el botón / alternar de la unidad estándarToggle devuelve el estado actual del botón, ya sea el mismo estado pasado en valor o el nuevo valor modificado por el usuario. Entonces un mejor patrón sería ...
Puede usar el mismo patrón de intercambio dependiente del estado para GUIStyles.
fuente
Aquí hay una forma básica pero simple de hacerlo:
tomado de aquí
fuente
Utilice GUILayout.Toolbar . Los documentos son engañosos, en realidad ejecuta los botones juntos:
Además, puede usar los estilos "buttonleft", "buttonmid", "buttonright" para dibujar directamente este estilo de botón.
fuente
Puedes hacerlo:
Es muy importante que instancias
buttonStyle
dentro, de loOnInspectorGUI()
contrario obtendrás un error. Además, no lo hagabuttonStyle = GUI.skin.button;
porque estaría copiando laskin.button
referencia y cualquier cambio enbuttonStyle
estaría cambiando todos los estilos de botones.fuente