--- title: Styles UI type: docs weight: 14 --- Cette page documente le système de styles pour les widgets UI de Hytale. ## États de Style Les widgets interactifs supportent plusieurs états : | État | Quand Appliqué | |------|----------------| | `Default` | État normal | | `Hovered` | Souris sur le widget | | `Pressed` | Bouton de souris maintenu | | `Disabled` | Widget désactivé | ``` Style: ( Default: (Background: "Button.png"), Hovered: (Background: "ButtonHovered.png"), Pressed: (Background: "ButtonPressed.png"), Disabled: (Background: "ButtonDisabled.png") ); ``` ## LabelStyle Style de texte pour les widgets Label. ``` @MyLabelStyle = LabelStyle( FontSize: 16, FontName: "Default", // ou "Secondary" TextColor: #ffffff, RenderBold: true, RenderUppercase: false, LetterSpacing: 0, Wrap: false, HorizontalAlignment: Center, // Start, Center, End VerticalAlignment: Center, // Top, Center, Bottom OutlineColor: #000000(0.5) ); Label { Style: @MyLabelStyle; } ``` ### Propriétés LabelStyle | Propriété | Type | Description | |-----------|------|-------------| | `FontSize` | nombre | Taille du texte | | `FontName` | chaîne | Famille de police ("Default", "Secondary") | | `TextColor` | couleur | Couleur du texte | | `RenderBold` | bool | Texte en gras | | `RenderUppercase` | bool | Forcer les majuscules | | `LetterSpacing` | nombre | Espace entre les caractères | | `Wrap` | bool | Activer le retour à la ligne | | `HorizontalAlignment` | enum | Start, Center, End | | `VerticalAlignment` | enum | Top, Center, Bottom | | `OutlineColor` | couleur | Couleur du contour du texte | | `Alignment` | enum | Raccourci pour les deux alignements (Center) | ## ButtonStyle Style pour les widgets Button (sans texte). ``` @MyButtonStyle = ButtonStyle( Default: (Background: (TexturePath: "Button.png", Border: 12)), Hovered: (Background: (TexturePath: "ButtonHovered.png", Border: 12)), Pressed: (Background: (TexturePath: "ButtonPressed.png", Border: 12)), Disabled: (Background: (TexturePath: "ButtonDisabled.png", Border: 12)), Sounds: @ButtonSounds ); Button { Style: @MyButtonStyle; } ``` ### Propriétés d'État Button | Propriété | Type | Description | |-----------|------|-------------| | `Background` | PatchStyle | Apparence du fond | ## TextButtonStyle Style pour les widgets TextButton. ``` @MyTextButtonStyle = TextButtonStyle( Default: ( Background: (TexturePath: "Button.png", Border: 12), LabelStyle: (FontSize: 17, TextColor: #bfcdd5, RenderBold: true) ), Hovered: ( Background: (TexturePath: "ButtonHovered.png", Border: 12), LabelStyle: (FontSize: 17, TextColor: #ffffff, RenderBold: true) ), Pressed: ( Background: (TexturePath: "ButtonPressed.png", Border: 12), LabelStyle: (FontSize: 17, TextColor: #aaaaaa, RenderBold: true) ), Disabled: ( Background: (TexturePath: "ButtonDisabled.png", Border: 12), LabelStyle: (FontSize: 17, TextColor: #797b7c, RenderBold: true) ), Sounds: @ButtonSounds ); ``` ### Propriétés d'État TextButton | Propriété | Type | Description | |-----------|------|-------------| | `Background` | PatchStyle | Apparence du fond | | `LabelStyle` | LabelStyle | Style du texte | ## PatchStyle Configuration de texture 9-patch pour les fonds étirables. ``` @MyPatchStyle = PatchStyle( TexturePath: "Panel.png", Border: 16 // Bordure uniforme ); @MyPatchStyle2 = PatchStyle( TexturePath: "Button.png", HorizontalBorder: 80, // Bordure gauche/droite VerticalBorder: 12 // Bordure haut/bas ); // Avec teinte de couleur @ColoredPatch = PatchStyle( Color: #ff0000(0.5) // Rouge semi-transparent ); ``` ### Propriétés PatchStyle | Propriété | Type | Description | |-----------|------|-------------| | `TexturePath` | chaîne | Chemin vers le fichier texture | | `Border` | nombre | Bordure 9-patch uniforme | | `HorizontalBorder` | nombre | Bordure 9-patch gauche/droite | | `VerticalBorder` | nombre | Bordure 9-patch haut/bas | | `Color` | couleur | Couleur unie (au lieu de texture) | ## InputFieldStyle Style pour les champs de saisie texte. ``` @MyInputStyle = InputFieldStyle( TextColor: #ffffff, FontSize: 16 ); @MyPlaceholderStyle = InputFieldStyle( TextColor: #6e7da1 ); TextField { Style: @MyInputStyle; PlaceholderStyle: @MyPlaceholderStyle; } ``` ## SliderStyle Style pour les contrôles curseur. ``` @MySliderStyle = SliderStyle( Background: (TexturePath: "SliderBackground.png", Border: 2), Handle: "SliderHandle.png", HandleWidth: 16, HandleHeight: 16, Sounds: ( Activate: (SoundPath: "SliderTick.ogg", Volume: 10), MouseHover: (SoundPath: "Hover.ogg", Volume: 6) ) ); ``` ### Propriétés SliderStyle | Propriété | Type | Description | |-----------|------|-------------| | `Background` | PatchStyle | Fond de la piste | | `Handle` | chaîne | Chemin texture de la poignée | | `HandleWidth` | nombre | Largeur de la poignée | | `HandleHeight` | nombre | Hauteur de la poignée | | `Sounds` | objet | Effets sonores | ## CheckBoxStyle Style pour les cases à cocher. ``` @MyCheckBoxStyle = CheckBoxStyle( Unchecked: ( DefaultBackground: (Color: #00000000), HoveredBackground: (Color: #ffffff20), PressedBackground: (Color: #ffffff10), DisabledBackground: (Color: #424242), ChangedSound: (SoundPath: "Untick.ogg", Volume: 6) ), Checked: ( DefaultBackground: (TexturePath: "Checkmark.png"), HoveredBackground: (TexturePath: "Checkmark.png"), PressedBackground: (TexturePath: "Checkmark.png"), ChangedSound: (SoundPath: "Tick.ogg", Volume: 6) ) ); ``` ## DropdownBoxStyle Style pour les menus déroulants. ``` @MyDropdownStyle = DropdownBoxStyle( DefaultBackground: (TexturePath: "Dropdown.png", Border: 16), HoveredBackground: (TexturePath: "DropdownHovered.png", Border: 16), PressedBackground: (TexturePath: "DropdownPressed.png", Border: 16), DefaultArrowTexturePath: "DropdownCaret.png", HoveredArrowTexturePath: "DropdownCaret.png", PressedArrowTexturePath: "DropdownCaretPressed.png", ArrowWidth: 13, ArrowHeight: 18, LabelStyle: (TextColor: #96a9be, FontSize: 13), EntryLabelStyle: (TextColor: #b7cedd), SelectedEntryLabelStyle: (TextColor: #b7cedd, RenderBold: true), HorizontalPadding: 8, PanelBackground: (TexturePath: "DropdownBox.png", Border: 16), PanelPadding: 6, PanelAlign: Right, // ou Bottom PanelOffset: 7, EntryHeight: 31, EntriesInViewport: 10, HoveredEntryBackground: (Color: #0a0f17), PressedEntryBackground: (Color: #0f1621), Sounds: @DropdownBoxSounds, EntrySounds: @ButtonSounds ); ``` ## ScrollbarStyle Style pour les barres de défilement. ``` @MyScrollbarStyle = ScrollbarStyle( Spacing: 6, Size: 6, Background: (TexturePath: "Scrollbar.png", Border: 3), Handle: (TexturePath: "ScrollbarHandle.png", Border: 3), HoveredHandle: (TexturePath: "ScrollbarHandleHovered.png", Border: 3), DraggedHandle: (TexturePath: "ScrollbarHandleDragged.png", Border: 3), OnlyVisibleWhenHovered: false ); ``` ## TabNavigationStyle Style pour la navigation par onglets. ``` @TabStyle = TabStyleState( Background: "Tab.png", Overlay: "TabOverlay.png", IconAnchor: (Width: 44, Height: 44), Anchor: (Width: 82, Height: 62) ); @MyTabsStyle = TabNavigationStyle( TabStyle: ( Default: @TabStyle, Hovered: (...@TabStyle, Background: "TabHovered.png"), Pressed: (...@TabStyle, Background: "TabPressed.png") ), SelectedTabStyle: ( Default: ( ...@TabStyle, Overlay: "TabSelectedOverlay.png" ) ), TabSounds: @TabSounds, SeparatorAnchor: (Width: 5, Height: 34), SeparatorBackground: "TabSeparator.png" ); ``` ## TextTooltipStyle Style pour les infobulles texte. ``` @MyTooltipStyle = TextTooltipStyle( Background: (TexturePath: "TooltipBackground.png", Border: 24), MaxWidth: 400, LabelStyle: (Wrap: true, FontSize: 16), Padding: 24 ); ``` ## Définitions de Sons Les sons sont définis comme des objets avec des propriétés audio. ``` @ButtonSounds = ( Activate: ( SoundPath: "Sounds/ButtonActivate.ogg", Volume: 6, MinPitch: -0.2, MaxPitch: 0.2 ), MouseHover: ( SoundPath: "Sounds/ButtonHover.ogg", Volume: 6 ) ); @DropdownBoxSounds = DropdownBoxSounds( Activate: (SoundPath: "Tick.ogg", Volume: 6), MouseHover: (SoundPath: "Hover.ogg", Volume: 6), Close: (SoundPath: "Untick.ogg", Volume: 6) ); ``` ### Propriétés de Son | Propriété | Type | Description | |-----------|------|-------------| | `SoundPath` | chaîne | Chemin vers le fichier audio | | `Volume` | nombre | Niveau de volume (peut être négatif) | | `MinPitch` | nombre | Variation de hauteur minimale | | `MaxPitch` | nombre | Variation de hauteur maximale | ## Héritage de Styles Utilisez l'opérateur spread pour étendre les styles : ``` @BaseButtonStyle = TextButtonStyle( Default: (Background: @DefaultBg, LabelStyle: @DefaultLabel), Hovered: (Background: @HoveredBg, LabelStyle: @DefaultLabel), Pressed: (Background: @PressedBg, LabelStyle: @DefaultLabel), Sounds: @ButtonSounds ); @DestructiveButtonStyle = TextButtonStyle( ...@BaseButtonStyle, Default: (...@BaseButtonStyle.Default, Background: @DestructiveBg), Sounds: @DestructiveSounds ); ```