gohud

Три шари

← Оформлення

Пресет зв'язує всі три. Поля, які ви лишите порожніми, повертаються до типових значень.

ШарВирішуєЯк його змінити
Theme Кольори, розміри, масштаб тексту й форму всього, що малює рушій — панелі кнопок, поля вводу, вкладки, графіку перемикачів Напишіть .tres або згенеруйте його через tools/make_theme.py
GoSkin Форму всього, що малює код — стик, лицьові боки швидких слотів, кільце коуч-мітки, чипи, скелетони, роздільники, заголовки секцій Успадкуйте його й перевизначте лише ті методи, які вам потрібні
GoIconSet Іконки на ім'я — 84 стандартні малюнки або 16 гравійованих із середньовічного набору поверх них. Пакет текстур чи шрифт іконок; код виклику однаковий в обох випадках Подайте набір або перевизначте лише кілька імен
Чому самої лише теми замало. Заокруглений — єдиний кут, який має StyleBoxFlat: поставте радіус у нуль — і отримаєте прямий кут; проміжного нічого немає. Зрізані по діагоналі кути, один потовщений край, зовнішнє сяйво — рушій не малює нічого з цього. А стик і коуч-мітка малюються в _draw(), куди темі не дістатися взагалі.

Як вибрати

GoUi.use_preset(GoThemePresets.SCIFI_DARK)

Цей один рядок міняє тему, скін та іконки. З редактора скористайтеся Параметрами проєкту → Gohud → Theme → Preset; із ресурсу налаштувань — GoConfig.preset.

Лишити одне поле своїм

GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons     # ваші іконки, решта — від пресету

Явно задані theme, skin чи icons переважають над пресетом.

Чотирнадцять вбудованих пресетів

ПресетПанеліСкін · іконки
default_dark · default_lightЗаокруглені панелі StyleBoxFlat на градуйованій шкалі тіней; головні кнопки підіймаються й осідають при натисканніGoSkin · 84 стандартні іконки
scifi_dark · scifi_lightЗрізані панелі GoStyleBoxCut із неоновим краєм і сяйвом; позначки фокуса GoStyleBoxBracketGoSkinSciFi — шестикутний стик · стандартні іконки
medieval_dark · medieval_lightКовані рами GoStyleBoxMedieval — залізо та шкіра або пергамент — із заклепками й кутовими оздобами в менюGoSkinMedieval · 16 гравійованих іконок поверх стандартних
material_light · material_dark НовеMaterial 3 Expressive для екранів застосунків — кнопки-пігулки 40dp у зоні дотику 48dp, діалоги 28dp, заповнені картки, поля з контуром, повзунок Expressive; компоненти застосунків (панель навігації, верхня панель, FAB, рядок пошуку, чипи, прогрес, вибір дати) дотримуються токенів компонентів M3GoSkinMaterial · стандартні іконки
kids_light · kids_dark НовеДля дітей — коробка з іграшками: товсті контури й щільний бортик під кожною клавішею, яка просідає під час натискання; заглиблені поля введення, вкладки-бульбашки, желейні смуги; кожен вид елементів має свій колір олівця, слоти-цукерки, значки-наліпки, райдужний джойстик і різнокольорові діаграми. Розміри й шрифт проєкту не змінюються.GoSkinKids · стандартні іконки
arcade_light · arcade_dark НовеІгровий автомат, який малює GoStyleBoxArcade: кожна клавіша розфарбована градієнтом згори донизу, має білий відблиск і бортик, що западає від натискання, у темно-синьому чорнильному контурі, а підпис на ній білий із чорнильним контуром — зелений основний колір, сині клавіші, червона небезпека, лавандові малі клавіші. Товсті дошки з кольоровою рамкою навколо світлої заглибини; золотий банер заголовка й кругла червона клавіша закриття на вікнах.GoSkinArcade · стандартні іконки
comic_light · comic_dark НовеКадри коміксу, які малює GoStyleBoxComic: жирний чорнильний контур і жорстка тінь на кожній панелі, яка зникає від натискання; обведені чорнилом перемикачі, прапорці й ручки повзунків, жовта плашка заголовка у вікон. Товщина контуру, розмір тіні й те, чи видно тіні взагалі, — налаштування GoConfig.GoSkinComic · стандартні іконки

Усі чотирнадцять поруч

Той самий екран галереї, де змінилася лише назва пресету, — код віджетів не відрізняється жодним рядком. Кожен знімок — телефон, який тримають вертикально, 390×844.

Галерея віджетів gohud із пресетом default_dark
default_dark
Галерея віджетів gohud із пресетом default_light
default_light
Галерея віджетів gohud із пресетом scifi_dark
scifi_dark
Галерея віджетів gohud із пресетом scifi_light
scifi_light
Галерея віджетів gohud із пресетом medieval_dark
medieval_dark
Галерея віджетів gohud із пресетом medieval_light
medieval_light
Галерея віджетів gohud із пресетом material_light
material_light
Галерея віджетів gohud із пресетом material_dark
material_dark
Галерея віджетів gohud із пресетом kids_light
kids_light
Галерея віджетів gohud із пресетом kids_dark
kids_dark
Галерея віджетів gohud із пресетом comic_light
comic_light
Галерея віджетів gohud із пресетом comic_dark
comic_dark
Галерея віджетів gohud із пресетом arcade_light
arcade_light
Галерея віджетів gohud із пресетом arcade_dark
arcade_dark

Середньовіччя: залізо, шкіра й пергамент

medieval_dark поєднує темне залізо та шкіру зі старим золотом. medieval_light бере пергамент і чорнило. Обидва використовують GoSkinMedieval, наявні віджети та 16 оригінальних іконок із гравіюванням; іконки навігації повертаються до первісного набору.

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
# Або: GoUi.use_preset(GoThemePresets.MEDIEVAL_LIGHT)

Виберіть пресет, перш ніж створювати свій інтерфейс. Явні перевизначення GoConfig.theme, skin чи icons і далі мають перевагу. Відкрийте res://addons/gohud/examples/medieval/medieval.tscn і натисніть F6, щоб побачити робочі картку персонажа, торбу та журнал завдань. Її кнопки перемикають варіанти й відкривають подробиці предметів.

Середньовічний залізний інтерфейс персонажа, інвентарю та завдань
Залізо та шкіра
Середньовічний пергаментний інтерфейс персонажа, інвентарю та завдань
Пергамент і чорнило

Рами меню мають заклепку й невелику кутову оздобу; завжди видимий HUD тримає стриманий край. Здоров'я, мана та витривалість заливаються червоним, синім і оливковим. Cinzel обмежений заголовками та підзаголовками; основний текст лишає шрифт проєкту або типовий. Вбудований шрифт містить свою ліцензію в assets/fonts/cinzel/OFL.txt.

Гравійований набір перемальовує bag, book, box, coin, crown, flag, heart, key, map, potion, shield, star, sword і user, а також додає scroll та seal. Кожне інше ім'я повертається до стандартного набору, тож close і settings зберігають свої типові малюнки в кожному пресеті. Cinzel покриває латиницю; для локалізованих заголовків дайте власний шрифт через shape.fonts.

Що набір перевірок стежить в обох варіантах. Що вибрано середньовічний скін; що панелі меню та HUD — ковані рами, причому оздоба лише в меню; що заголовки беруть Cinzel, а основний текст лишає успадкований шрифт; що гравійовані іконки імпортуються як DPITexture; що справжній швидкий слот користується скіном; що зміна регуляторів у копії скіна доходить до слота, не чіпаючи пресету; і що перемикання назад відновлює стандартну та сай-фай геометрію.

Створіть власне королівство

python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# Відредагуйте themes/palettes/kingdom.json, а тоді:
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# У GDScript, перед створенням віджетів:
GoUi.use_preset(&"kingdom")

Теми в JSON можуть успадковувати інші теми в JSON. Пропущені значення зберігають налаштування батька; циклічне успадкування відхиляється. Згенерований пресет зберігає набір іконок свого батька.

ПараметрДія
shape.material0: залізо · 1: шкіра · 2: пергамент. Керує позначками на поверхні.
shape.grain_alphaНепрозорість текстури. Поставте 0 для чистої поверхні.
shape.ornament_scale · shape.bevel_strengthРозмір кутової оздоби меню та сила фаски-відблиску.
shape.fontsЗіставляє ролі title, subtitle, caption, body і button із файлами шрифтів res://, що лежать у доповненні. Пропущені ролі лишають успадкований шрифт.
skin.dialsРадіус швидкого слота, видимість заклепок, зернистість і відблиск. Повна таблиця нижче перелічує кожен регулятор.

Material 3: образ для екранів застосунків Нове

material_light і material_dark приносять у gohud Material 3 Expressive — форми, розміри та типографіку компонентів M3, де кожне число взято з офіційного набору токенів M3 (material-web, tokens/versions/latest). Беріть їх там, де екран має відчуватися як застосунок, а не як ігрове меню: крамниці, пошта, сторінки облікового запису й налаштувань, таблиці лідерів, застосунок-компаньйон.

GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT)
# Або: GoUi.use_preset(GoThemePresets.MATERIAL_DARK)
Галерея gohud у material_light — кнопки-пігулки, заповнені картки й поля з контуром
material_light
Галерея gohud у material_dark
material_dark
Діалог підтвердження в material_light поверх гри — кути 28dp і кнопки-пігулки
GoDialogs · material_light
Діалог підтвердження в material_dark поверх гри
GoDialogs · material_dark

Що змінюється

ЧастинаУ Material 3
КнопкиПігулки (повне заокруглення кутів). Плашка заввишки 40dp стоїть по центру зони дотику 48dp, тож область натискання не зменшується; у компактної кнопки плашка 32dp. Написи набрано Roboto з насиченістю 500.
Діалоги й аркушіКути 28dp (extra-large), відступи 24dp і заголовок 24sp — GoDialogs, GoSurface, GoSheet і всі спливні вікна, побудовані на них.
КарткиЗаповнені картки з кутами 12dp і відступами 16dp.
Поля й повзункиТекстові поля з контуром; повзунок Expressive із високою ручкою.
Чипи й сегментиКути 8dp (small).
Компоненти застосунківGoNavBar, GoAppBar, GoFab, GoSearchBar, чипи, GoProgress і GoDatePicker дотримуються токенів компонентів M3.
ШрифтВбудований Roboto — для заголовків, підзаголовків, підписів і кнопок. Основний текст лишає шрифт вашого проєкту, тож корейський, японський, китайський чи арабський текст і далі відображається.
НепрозорістьУсі панелі непрозорі — поверхні M3 суцільні. (Панелі стандартного, сай-фай і середньовічного образів непрозорі на 80%, тож гра просвічує.)
СкінGoSkinMaterial: бічна панель — модальний бічний аркуш M3, лицьова панель консолі — плаваюча панель інструментів M3, банери лежать на surface_container_low.
Де специфікація поступається читабельності. M3 приглушує напис неактивного елемента до 38%; gohud тримає його на 4.5:1, щоб його й далі можна було прочитати. Снекбари зберігають світлу плашку, бо колір їхнього тексту — токен, який вибирає сам віджет: інверсна плашка дала б темний текст на темному. tools/check_contrast.py вимірює обидва образи, як і всі інші.

Roboto поширюється за SIL Open Font License 1.1 (assets/fonts/roboto/OFL.txt) і використовується лише пресетами Material.

Дитячий образ: коробка з іграшками Нове

kids_light (кремовий і персиковий із виноградним основним кольором) і kids_dark (чорничне тло, сонячно-жовтий основний колір, м'ятні пігулки) — образ для дитячих ігор і навчальних застосунків: пухкий, яскравий і м'який, з тих, які маленькому пальцю так і кортить натиснути.

GoUi.use_preset(&"kids_light")
# Або: GoUi.use_preset(&"kids_dark")
Галерея gohud у kids_light — кнопки-желейні цукерки кольорів олівців
kids_light
Галерея gohud у kids_dark — коробка з іграшками на нічно-синій сторінці
kids_dark
Діалог підтвердження в kids_light — сонячна стрічка заголовка й кругла кнопка закриття-цукерка
GoDialogs · kids_light
Діалог підтвердження в kids_dark — м'ятна стрічка заголовка й кнопка закриття-цукерка
GoDialogs · kids_dark

Що змінюється

ЧастинаУ дитячих образах
Кожна лицьова панельЖелейна цукерка, яку малює GoStyleBoxJelly: товстий контур, щільний бортик під усім, що натискається, тіло, світліше згори й темніше знизу, і білий відблиск ліворуч угорі. Її носять клавіші, рядки списків, згортані заголовки, поля, смуги, повзунки й панелі.
НатисканняБортик зникає, і лицьова панель опускається на його місце, потім желейне сплющення — на мить широке й пласке, а тоді пружний відскок назад. Працює на кожній кнопці, яку створює gohud; reduce_motion його вимикає.
Поля, вкладки, смугиТекстове поле — те саме желе, вивернуте всередину: заглиблена лунка. Вкладки — бульбашки, смуги мають желейний відблиск.
КолірКожен вид елементів має свій колір олівця, дібраний тим самим генератором, що й у кожному образі, тож усі пороги контрасту й далі дотримуються.
ВікнаСонячна стрічка (вночі м'ятна) за заголовком вікна — заголовок зменшується, аж до 15, щоб лишитися в один рядок, — і кругла кнопка закриття-цукерка «небезпечного» кольору олівця з білим хрестиком.
Частини скінаGoSkinKids: швидкі слоти — цукеркові кубики, що просідають під час перезаряджання, значки — наліпки, чипи й пігулка навігації — маленькі желейки, аватари — круглі цукерки, стик — веселка, діаграми розфарбовано олівцями, сповіщення й повідомлення — записки-наліпки з щільним обідком.
НепрозорістьПанелі, картки, сповіщення та спливні вікна непрозорі.
Розміри не змінюються. Контур і бортик малюються всередині прямокутника кожного елемента, а кожна лицьова панель зберігає відступи, які дала їй тема, тож екран, розкладений в іншому образі, зберігає свою розкладку, а проєкт-господар, який сам закріплює розміри, вимірює ті самі частини. Шрифт вашого проєкту теж зберігається, тож нелатинські писемності й далі відображаються.
Швидкі слоти, стик і чип у кожному скіні — стандартному, дитячому, Material, середньовічному та сай-фай
Частини, які малює скін, — дитячий ряд другий

Створіть власну коробку з іграшками

python3 addons/gohud/tools/new_theme.py candy --from kids_light
# Відредагуйте themes/palettes/candy.json, а тоді:
python3 addons/gohud/tools/make_theme.py candy
GoUi.use_preset(&"candy")

Комікс: жирне чорнило Нове

comic_light (білі панелі на сторінці кольору кремового паперу, кобальтовий основний колір) і comic_dark (сланцеві панелі на нічній сторінці, кремові контури, жовтий основний колір) малюють кожну панель як кадр коміксу — жирний чорнильний контур із жорсткою тінню позаду.

GoUi.use_preset(&"comic_light")
# Або: GoUi.use_preset(&"comic_dark")
Галерея gohud у comic_light — обведені чорнилом клавіші, рядки й смуги з жорсткими тінями
comic_light
Галерея gohud у comic_dark — кремове чорнило на нічній сторінці
comic_dark
Діалог підтвердження в comic_light — жовта плашка заголовка й кругла кнопка закриття, обведена чорнилом
GoDialogs · comic_light
Діалог підтвердження в comic_dark — жовта плашка на сланцевій картці
GoDialogs · comic_dark

Що змінюється

ЧастинаУ коміксових образах
Кожна лицьова панельЇї малює GoStyleBoxComic: колір поверхні всередині жирного контуру кольору чорнила й жорстка тінь униз і праворуч. Її носять клавіші, рядки списків, поля, вкладки, смуги, повзунки, панелі й спливні вікна.
НатисканняТінь зникає, і лицьова панель опускається на її місце.
Елементи керуванняПеремикачі, прапорці, радіокнопки й ручки повзунків теж обведені чорнилом, і кожен має власну маленьку тінь.
ВікнаЖовта плашка за заголовком вікна й кругла кнопка закриття, обведена чорнилом.
Частини скінаGoSkinComic: швидкі слоти, чипи, значки, аватари, сповіщення, панель навігації, FAB і клітинки дат обведено чорнилом; ручка стика відкидає тінь; діаграми розфарбовано яскравими основними кольорами.
НепрозорістьПанелі, картки, сповіщення та спливні вікна непрозорі; картки HUD непрозорі на 92%.

Налаштування чорнила й тіні

Три налаштування GoConfig змінюють усі коміксові панелі разом. Нічого не перебудовується — екран перемальовується, щойно ви їх задаєте.

GoUi.config.comic_border_width = 2.0   # контур (dp) — типово 3
GoUi.config.comic_shadow_size = 6.0    # тінь (dp) — типово 4
GoUi.config.comic_shadow = false       # ніде жодних тіней

Окремий віджет може піти власним шляхом, хоч би що казало налаштування:

GoStyle.comic_shadow(skip_button, false)     # ця кнопка лежить пласко
GoStyle.comic_shadow(card, true, true)       # ця картка й усе в ній зберігають тінь
GoStyle.comic_border(title, 5.0)             # у цього елемента контур товщий
Розміри не змінюються. Контур і тінь малюються всередині прямокутника кожного елемента, а кожна лицьова панель зберігає відступи, які дала їй тема, тож екран, розкладений в іншому образі, зберігає свою розкладку. Шрифт вашого проєкту теж зберігається.
Швидкі слоти, стик і чип у виконанні скіна коміксу
Частини, які малює скін коміксу

Створіть власний комікс

python3 addons/gohud/tools/new_theme.py inked --from comic_light
# Відредагуйте themes/palettes/inked.json, а тоді:
python3 addons/gohud/tools/make_theme.py inked
GoUi.use_preset(&"inked")

Аркада: розфарбовані клавіші й товсті дошки Нове

arcade_light (білі дошки на небесно-блакитній сторінці) і arcade_dark (темно-сині дошки на нічній сторінці) оформлюють кожен екран як ігровий автомат: кожна клавіша розфарбована — градієнт від світлого верху до глибшого низу, білий мазок відблиску й бортик, що западає від натискання, у темно-синьому чорнильному контурі, — а кожна дошка товста: кольорова рамка навколо світлої заглибини.

GoUi.use_preset(&"arcade_light")
# Або: GoUi.use_preset(&"arcade_dark")
Галерея gohud у arcade_light — зелені, сині, червоні й лавандові розфарбовані клавіші та дошка HUD у синій рамці на небесно-блакитній сторінці
arcade_light
Галерея gohud у arcade_dark — ті самі яскраві клавіші на нічній сторінці
arcade_dark
Діалог підтвердження в arcade_light — золотий банер заголовка, кругла червона клавіша закриття та сині й зелені розфарбовані клавіші на дошці в рамці
GoDialogs · arcade_light
Діалог підтвердження в arcade_dark — золотий банер на темно-синій дошці
GoDialogs · arcade_dark

Що змінюється

ЧастинаВ аркадних образах
КлавішіЇх малює GoStyleBoxArcade: тіло з градієнтом, білий відблиск біля верхнього лівого кута, глибший бортик і темно-синій чорнильний контур. Основна клавіша зелена, звичайні клавіші й вибрана вкладка сині, клавіші небезпеки коралові й червоні, малі клавіші та решта вкладок лавандові.
ПідписиБілі з чорнильним контуром на кожній розфарбованій клавіші. Кожну фарбу зсувають, доки цей підпис не читатиметься на будь-якій висоті її градієнта, — 4.6:1 або більше, причому контур зараховується до літери, як це робить WCAG.
НатисканняБортик зникає, клавіша втискається на своє місце й вискакує назад.
ДошкиПанелі, картки, картки HUD і спливні вікна товсті: кольорова рамка (6dp навколо вікна, 4 навколо картки чи картки HUD, 3 навколо меню чи сповіщення) з власним відблиском і бортиком навколо світлої заглибини з чорнильною лінією. Відступи трохи зростають, щоб її вмістити, тож текст ніколи не торкається рамки.
Поля й смугиПоля введення й жолоби смуг — заглиблені; заповнення смуги — глянцева розфарбована трубка яскравого кольору заповнення.
ВікнаЗолотий банер із білим заголовком у чорнильному контурі й кругла червона клавіша закриття з білим хрестиком.
Частини скінаGoSkinArcade: швидкі слоти й чипи — ковпачки клавіш, слот на перезарядці світиться золотою облямівкою, значки — світлі плашки, сповіщення обрамлені власним кольором, вибрана картка світиться золотою облямівкою, FAB — золота клавіша, а стик — глянцевий майданчик із чотирма стрілками.
НепрозорістьПанелі, картки, сповіщення та спливні вікна непрозорі; картки HUD непрозорі на 94%.

Розфарбуйте одну клавішу власним кольором

Тема розфарбовує клавіші за їхнім видом. Меню, у якому кожна клавіша хоче свого кольору, розфарбовує їх по одній — лицьовий бік під час наведення трохи світліший, натиснутий трохи глибший, а вимкнений лишається тьмяним:

menu.add_child(GoStyle.arcade_paint(GoStyle.button("Resume", _resume, GoStyle.Tone.PRIMARY), Color("#4ACB3E")))
menu.add_child(GoStyle.arcade_paint(GoStyle.button("Shop", _shop), Color("#FF8A1E")))
GoStyle.arcade_paint(stage_card, Color("#E3343D"), true)   # рамка дошки й кожна клавіша в ній
Підпис завжди читається. Фарбу, на якій білий підпис не читався б, зсувають світлішою чи глибшою, доки він не стане читатися, тож колір, який ви передаєте, — лише відправна точка. В інших образах arcade_paint() нічого не робить.
Клавіші зберігають розмір. Бортик і відблиск малюються всередині прямокутника кожної клавіші, тож екран, розкладений в іншому образі, зберігає свою розкладку. Дошки дають вмісту трохи більші відступи (картка й картка HUD — 12dp, 15 знизу), щоб текст ніколи не торкався рамки. Шрифт вашого проєкту теж зберігається.
Швидкі слоти, стик і чип у виконанні аркадного скіна — глянцеві ковпачки клавіш і майданчик із чотирма стрілками
Частини, які малює аркадний скін

Створіть власну аркаду

python3 addons/gohud/tools/new_theme.py cabinet --from arcade_light
# Відредагуйте themes/palettes/cabinet.json — кольори *_vivid і є фарбами, — а тоді:
python3 addons/gohud/tools/make_theme.py cabinet
GoUi.use_preset(&"cabinet")