İyi görünüp görünmediğine küçük şeyler karar verir
Büyük panelleri istediğiniz kadar cilalayın — göze çarpan hep küçük bir şeydir: ikiye bölünmüş bir kelime, kesilmiş bir ışıma, sıkışmış bir slot. 2026-09-13'te böyle dört şey işaret edildi ve demo ekranında değil, widget'lar ile temalarda düzeltildi; böylece her ekran aynı sonucu alıyor.
| Görünen | Nedeni | Çözüm |
|---|---|---|
Rehber işaretinin Done yazısı Don/e oldu |
Satır kaydırması açık bir düğme, yazı genişliğini en küçük boyutundan düşer — sıkıştırın, kelimenin ortasından bölünsün | GoStyle.fit_words(): tek bir kelime asla bölünmez; birden çok kelime kaydırılır ama en uzun kelime her zaman sığar — karar çeviri anahtarına göre değil görüntülenen yazıya göre verilir ve dil değiştiğinde form tarafından yeniden uygulanır |
| Tam genişlikteki bir düğmenin ışıması solda dikey olarak kesildi | Bir kaydırma kabı kenarında istisnasız kırpar. Ray boşluğu sayesinde yalnızca sağ taraf kurtuldu | GoScroll, kenarını 12dp dışarı itmek için üst öğenin iç boşluğunu ödünç alır ve içeride geri verir — içerik yerinde kalır |
| Bir slotta süre, simge ve adet alt alta dizildi | 48dp içinde üç satır | Simge ortada büyük, kısayol sol üstte, adet sağ altta bir rozet, kalan süre simgenin üstünde bir rozet — rozet panelleri kaplamanın badge_box() metodundan gelir |
| Seçimi görünmeyen yassı bir açılır liste | Öğe vurgusu düğme panelini kullanıyordu; radyo işaretleri motorun soluk varsayılanıydı | Kendine ait bir vurgu paneli (yumuşak vurgu tonu), onay kutularıyla aynı radyo grafiği, dokunmaya uygun öğe yüksekliği |
Yalnızca simgeden oluşan düğmelere GoStyle.icon_button(icon, action, -1, tooltip_key) ile bir
açıklama verin — fare kullananlar için ipucu ve ekran okuyucular için erişilebilirlik adı, ikisi de bu tek
değerden gelir. İpucunu gohud kendisi çizer: motorun varsayılanı, genişlik hesabı bozulduğunda yazıyı
satır başına tek karakter olarak böler (1dp genişlikte ölçüldü).
Rehber işareti kartı sabit parçalardan uzak durur
Yatay kipte kart eskiden tam üst ya da alt kenara gönderiliyordu — tam da başlıkların ve HUD parçalarının
bulunduğu yere; demoda başlığın → × kısmının üstüne oturmuştu. Artık hedefiyle aynı hizada
kalıyor, yer ayıran her GoHudAnchor'ın etrafından dolaşıyor ve kaçınılacak diğer şeyleri
keep_clear üzerinden alıyor. Engeli hedefin üstünü kapatmadan aşacak en kısa mesafeyi
hareket eder ve ekran her şeyden kaçınmaya yetmeyecek kadar küçükse yerinde kalır — üst üste binmek
yok olmaktan iyidir. Sayfanın üstünde okunmasını sağlayan derinliği kaplama ayarlarından gelir
(float_shadow_size, float_shadow_lift, float_shadow_alpha; pahlı kaplamalar float_glow_size kullanır).
tour.keep_clear = [header_bar, toolbar] # anchor olmayan sabit parçalar
Fareli ve klavyeli ekranlar
Bir parmağın üstüne gelme durumu yoktur. Yalnızca mobili düşünerek geliştirin, yalnızca masaüstünde
olan iki durum denetimsiz kalır — ve biri bozuktu: gohud'un odak halkası birincil düğmede
görünmüyordu. Panel vurgu rengiydi ve halka da öyleydi: 1.00:1, kendi üstüne çizilmiş
aynı renk. Klavyeyle gezinirken nerede olduğunuzu anlamanın yolu yoktu.
Dolgulu düğmeler (GoPrimaryButton, GoDangerSolidButton) kendi paneliyle
kontrast oluşturan bir halka kullanır — koyu temada koyu, açık temada beyaz, bilimkurguda koyu bir
hedefleme köşeliği. Kontrast denetleyicisi odak halkasını üstünde durduğu panele karşı ölçer, bu
yüzden kural bir palet değişikliğinden sağ çıkar (WCAG 2.4.11 odak göstergelerinde 3:1 ister).
HUD widget'ları
GoHudAnchor — dokuz nokta
Güvenli alana ve kenar boşluklarına uyar. Ona bir landscape_spot verin, yatay kipte yer
değiştirsin — dikeyde alt ortada duran denetimler bunun yerine sağ alta gidebilir.
İçeriği HUD'ın altından çıkarmak
Kaydırılan bir ekran, ekranı bir HUD ile paylaştığında içerik onun altına kayar ve iki yazı kümesi hiçbiri okunmaz hâle gelene kadar üst üste biner. Bu eklentide iki kez oldu: bir giriş alanının yer tutucu yazısı hızlı slotların arasından sıkışıp çıktı ve bir ayar anahtarının topuzu can çubuğunun üstüne indi.
form.avoid_hud = true # görünen her GoHudAnchor'dan uzak dur
joystick_anchor.reserve_space = false # …yalnızca parmak altında beliren anchor'lar hariç
Her dikdörtgenden en az alana mal olan yönde kaçınılır. Sağ üstteki bir çubuğun etrafından dikey tutulan bir telefonda aşağı doğru (yüksekliğin %13'ü), yatayda ise yana doğru (genişliğin %21'i) dolaşılır — yatay kipte dikey olarak kaçınmak ekranın %27'sine mal olurdu. Zaten feda edilmiş alan, bir sonraki dikdörtgen ölçülmeden önce düşülür.
HUD parçaları birbiriyle de çarpışır
Dokuz nokta ekranı böler; parçaların birbirini ıskalayacağını garanti etmez. Üst ortadaki geniş bir snackbar, sağ üstteki can çubuğunun tam üstüne indi ve değeri gizledi — ne kadar can kaldığını okuyamıyordunuz.
notice_anchor.avoid_peers = true # sabit HUD'ın altına yerleşir
notice_anchor.reserve_space = false # ve görünürken sayfayı itmez
Yalnızca dikey olarak kenara çekilir — yana da kaymak, ortalanmış bir bildirimin her görünüşünde başka bir yerde belirmesine yol açardı. Üstelik yalnızca kendisi kenara çekilmeyen parçalardan kaçınır: ikisi birden çekilirse, ikisi sonsuza dek yer değiştirir.
GoBar — can, mana, deneyim
var hp := GoBar.new()
hp.label_text = "HP"
hp.ink = GoUi.color(GoTheme.DANGER_FILL) # yalnızca dolguya özgü token
hp.set_values(320, 500) # "320 / 500"
Değişimler 0.18 saniyede yumuşatılır — zıplayan bir can çubuğu darbenin ne kadar sert olduğunu
anlatmaz. reduce_motion bunu anında yapar. Büyük sayılar 12.3k gibi kısaltılır,
böylece basamaklar gelip gittikçe çubuğun genişliği titremez.
GoSlot — tek bir hızlı slot
Simge, adet, bekleme süresi ve kısayol tek bir yüzde. Rozetleri küçük bir dairenin kenarına asmak her slotu başka genişlikte yapar ve sıra yalpalar.
touch_peers üzerinden bildirin.
keyboard_focus varsayılan olarak kapalıdır, böylece sekiz slotluk bir sıra, Tab sırasında klavye
kullanan biriyle bütün ayar denetimlerinin arasına girmez. Girdi yalnızca klavye ya da oyun kumandasıysa açın.
GoJoystick — sanal joystick
| Kip | Davranış |
|---|---|
FIXED | Her zaman aynı yerde — bakmadan bulması kolay |
FOLLOW | Başparmağın indiği yerde belirir |
RELATIVE | Belirdikten sonra başparmağı izlemeyi sürdürür — uzun hareketler için rahat |
moved sinyalinden gelen Vector2'nin uzunluğu 0–1 arasındadır, yani doğrudan bir
hızla çarpabilirsiniz; ekran boyutuna ya da DPI'ya göre değişmez.
GoIconButton — küçük görünür, büyük basılır
touch_peers'a ihtiyacı vardır.