Quero criar uma ferramenta semelhante à ferramenta Terreno do Unity, que possui alguns botões de alternância no inspetor:
Como posso obter um design semelhante a isso? Sei como criar botões normais e outros componentes da interface do usuário no inspetor, mas não consigo encontrar informações suficientes para alternar os botões.
Até agora, usei alternadores normais que produzem uma caixa de seleção:
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;
}
Definir a alternância GUIStyle
para "Botão" não produz o resultado desejado. O conteúdo do texto ou da imagem fica à esquerda do botão em vez de dentro.
var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue, "Button" );
Além disso, nenhuma das opções encontradas no GUISkin parece não ajudar.
_smoothValue = !GUILayout.Button( SetAmountFieldContent, _smoothValue ? ToggleButtonStyleToggled : ToggleButtonStyleNormal)
, em vez de ter dois booleanos? Isso funciona bem para mim e o código parece próximo ao uso do botão / alternância padrão da unidadeAlternar retorna o estado atual do botão - o mesmo estado passado no valor ou o novo valor alterado pelo usuário. Então, um padrão melhor seria ...
Você pode usar o mesmo padrão de troca dependente do estado para GUIStyles.
fonte
Aqui está uma maneira básica, mas simples de fazer isso:
tirado daqui
fonte
Use GUILayout.Toolbar . Os documentos são enganosos, na verdade, eles funcionam juntos:
Além disso, você pode usar os estilos "buttonleft", "buttonmid", "buttonright" para desenhar diretamente esse estilo de botão.
fonte
Você consegue fazer isso:
É muito importante que você instancia
buttonStyle
dentro,OnInspectorGUI()
caso contrário você receberá um erro. Além disso, não faça isso,buttonStyle = GUI.skin.button;
porque você copiaria askin.button
referência e qualquer alteração alterariabuttonStyle
todos os estilos de botões.fonte