Je veux créer un outil similaire à l'outil Terrain d'Unity, qui a de jolis boutons à bascule dans l'inspecteur:
Comment puis-je réaliser une conception similaire à celle-ci? Je sais comment créer des boutons normaux et d'autres composants d'interface utilisateur dans l'inspecteur, mais je ne trouve pas suffisamment d'informations pour faire basculer les boutons.
Jusqu'à présent, j'ai utilisé des bascules normales qui produisent une case à cocher:
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;
}
Régler la bascule GUIStyle
sur "Button" ne produit pas le résultat souhaité. Le contenu du texte ou de l'image va à gauche du bouton au lieu de l'intérieur.
var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue, "Button" );
De plus, aucune des options trouvées dans GUISkin ne semble aider.
_smoothValue = !GUILayout.Button( SetAmountFieldContent, _smoothValue ? ToggleButtonStyleToggled : ToggleButtonStyleNormal)
, au lieu d'avoir deux booléens? Cela fonctionne bien pour moi et le code semble proche de l'utilisation du bouton / bascule d'unité standardToggle renvoie l'état actuel du bouton - soit le même état transmis en valeur, soit la nouvelle valeur telle que modifiée par l'utilisateur. Un meilleur schéma serait donc ...
Vous pouvez utiliser le même modèle de permutation dépendant de l'état pour les GUIStyles.
la source
Voici une manière simple mais simple de le faire:
pris d' ici
la source
Utilisez GUILayout.Toolbar . Les documents sont trompeurs, il exécute en fait les boutons ensemble:
De plus, vous pouvez utiliser les styles "buttonleft", "buttonmid", "buttonright" pour dessiner ces styles de bouton directement.
la source
Tu peux le faire:
Il est très important que vous instanciez à l'
buttonStyle
intérieurOnInspectorGUI()
sinon vous obtiendrez une erreur. De plus, ne le faites pasbuttonStyle = GUI.skin.button;
car vous copieriez laskin.button
référence et tout changement surbuttonStyle
serait de changer tous les styles de boutons.la source