Akıllı Etiketler
Kullanıcı giriş alanlarının ötesinde, meta etiketler SignalRGB API’sinden de veri alabilir. Bunlar, Snippet’ler bölümünde ele alınan Metre sınıfından farklı olarak metre olarak bilinir. Dört tür görsel metre mevcuttur: linear, area, ocr_textmatch ve ocr_numeric.
Ayrıca API yedi İçerik Özelliği sunar: ses düzeyi, ses genişliği, ses yoğunluğu, ses frekansı, bölge tonu, bölge doygunluğu ve bölge parlaklığı.
Metreler
Section titled “Metreler”Tüm metreler dört temel niteliği paylaşır:
| Nitelikler | Açıklama |
|---|---|
| Meter | Değişken adını tanımlar; engine.vision.meter aracılığıyla erişilebilir, burada meter seçtiğiniz addır. |
| Type | Metre türünü belirtir: linear, area, ocr_textmatch veya ocr_numeric |
| X | X koordinatı, normalleştirilmiş formda. Metre sol üst köşesinden çizilir. |
| Y | Y koordinatı, normalleştirilmiş formda. |
Normalleştirilmiş Koordinatlar
Section titled “Normalleştirilmiş Koordinatlar”X ve Y koordinatları, yükseklik ve genişlikle birlikte normalleştirilmiş değerler olarak girilmelidir. Örneğin, 1920x1080 çözünürlükte bir oyun oynuyorsam ve ekranın sol tarafında yaklaşık yarısına küçük bir metre yerleştirmek istiyorsam, metrenin başlangıç noktasını (sol üst köşe) soldan 50 piksel ve ekranın sol üst köşesinden 500 piksel aşağıda olarak belirlerim.
Bu bana şunu verir:
x = 50, y = 500.
Bunları normalleştirilmiş koordinatlara dönüştürmek için x’i ekran genişliğine (1920) ve y’yi ekran yüksekliğine (1080) bölerim; bu işlem (yuvarlanmış ve doğru formatta) şu sonucu verir:
x = “.026”, y = “.463”
Bu dönüşümün teorik olarak bir metrenin 16:9 en boy oranına sahip herhangi bir çözünürlükte çalışmasına izin vermesi gerekse de, birçok oyun çözünürlükler arasında küçük UI değişiklikleri yaşar. Farklı çözünürlükler için metre biçimlendirme bu sayfanın alt kısmındaki sorun giderme bölümünde ele alınacaktır.
Doğrusal Metre
Section titled “Doğrusal Metre”Doğrusal metre, yatay bir çizgi boyunca belirtilen HSL aralığıyla eşleşen piksellerin yüzdesini 0,0 ile 1,0 arasında bir değer olarak döndürür. Örneğin, yeşil bir can çubuğunun tam genişliğini kapsayan bir doğrusal metre, yarım can durumunda 0,5 değeri döndürür.
<meta meter="myLinear" type="linear" x=".1729" y=".9740" width=".0390" h="0-360" s="0-10" l="90-100">Doğrusal metreler dört ek nitelik gerektirir:
| Nitelik | Açıklama |
|---|---|
| Width | Genişlik değeri, normalleştirilmiş formda |
| H | HSL ton bileşeni, 0 ile 360 arasında |
| S | HSL doygunluk bileşeni, %0 ile %100 arasında |
| L | HSL parlaklık bileşeni, %0 ile %100 arasında |
Alan Metresi
Section titled “Alan Metresi”Alan metresi, dikdörtgen bir bölge içindeki belirtilen HSL aralığına giren piksellerin yüzdesini 0,0 ile 1,0 arasında değerler olarak döndürür. Bu tür metre, metin kutuları veya mini harita bölgeleri gibi daha büyük UI öğelerini tespit etmek için kullanılabilir.
<meta meter="myArea" type="area" x=".1729" y=".9740" width=".0390" height=".02" h="0-360" s="0-10" l="90-100">Alan metreler beş ek nitelik gerektirir:
| Nitelik | Açıklama |
|---|---|
| Width | Genişlik değeri, normalleştirilmiş formda |
| Height | Yükseklik değeri, normalleştirilmiş formda |
| H | HSL ton bileşeni, 0 ile 360 arasında |
| S | HSL doygunluk bileşeni, %0 ile %100 arasında |
| L | HSL parlaklık bileşeni, %0 ile %100 arasında |
OCR Metin Eşleşme Metresi
Section titled “OCR Metin Eşleşme Metresi”Bu metre, ekrandaki tanımlanmış dikdörtgen bir alan içinde belirli bir dize aramak için Optik Karakter Tanıma (OCR) kullanır. Dize bulunursa 1; bulunamazsa 0; emin değilse -1 döndürür.
<meta meter="myTextOCR" type="ocr_textmatch" x=".1729" y=".9740" width=".0390" height=".02" string="my string" confidence="70">OCR metin eşleşme metreleri dört ek nitelik gerektirir:
| Nitelik | Açıklama |
|---|---|
| Width | Genişlik, normalleştirilmiş formda. |
| Height | Yükseklik, normalleştirilmiş formda. |
| String | Aranacak dize. Büyük-küçük harf duyarlıdır. |
| Confidence | Metrenin bir eşleşme hakkında ne kadar emin olması gerektiğini belirten 0-100 arasında bir değer. Belirtilmezse varsayılan olarak 70’tir. |
OCR Sayısal Metre
Section titled “OCR Sayısal Metre”Bu metre, ekrandaki dikdörtgen bir alan içindeki sayısal değerleri tespit etmek için Optik Karakter Tanıma (OCR) kullanır. Başarılı olursa sayıyı tam sayı olarak döndürür; başarısız olursa -1 döndürür.
<meta meter="myNumOCR" type="ocr_numeric" x=".1729" y=".9740" width=".0390" height=".02" confidence="70">OCR sayısal metreler üç ek nitelik gerektirir:
| Nitelik | Açıklama |
|---|---|
| Width | Genişlik, normalleştirilmiş formda. |
| Height | Yükseklik, normalleştirilmiş formda. |
| Confidence | Metrenin bir eşleşme hakkında ne kadar emin olması gerektiğini belirten 0-100 arasında bir değer. Belirtilmezse varsayılan olarak 70’tir. |
İçerik Özellikleri
Section titled “İçerik Özellikleri”İçerik özellikleri doğrudan API’den gelen yüksek yoğunluklu metrelerdir.
Ses Özellikleri
Section titled “Ses Özellikleri”- engine.audio.level mevcut ses düzeyini desibel cinsinden döndürür.
- engine.audio.width gelen sesin algılanan stereo genişliğini 0 ile 1 arasında bir oran olarak verir.
- engine.audio.density gelen sesin frekans yoğunluğunu, yine 0 ile 1 arasında bir oran olarak sağlar; beyaz gürültü 1,0’a yakın değerler üretirken, saf tonlar 0’a daha yakın değerler döndürür.
- engine.audio.freq her biri belirli bir frekans bandının mevcut düzeyini temsil eden 200 öğeli bir dizi döndürür.
Ekran Özellikleri
Section titled “Ekran Özellikleri”- engine.zone.hue her biri ekrandaki bir noktanın ton değerini temsil eden 560 öğeli bir dizi döndürür. Bu noktalar 28 x 20’lik bir ızgaradan örneklenir.
- engine.zone.saturation her biri aynı 28 x 20’lik ızgaradan örneklenen bir ekran noktasındaki doygunluğu temsil eden 560 öğeli bir dizi döndürür.
- engine.zone.lightness her biri yine aynı 28 x 20’lik ızgaradan örneklenen bir ekran noktasındaki parlaklık değerini gösteren 560 öğeli bir dizi döndürür.
Sorun Giderme
Section titled “Sorun Giderme”Kod yazarken sorunlar oluşabilir. Aşağıda metrelerle ilgili yaygın sorunlar ve bunların nasıl çözüleceği yer almaktadır:
-
“Metrem veya kullanıcı kontrolüm uygulamada görünmüyor”
- Uygulamayı tamamen kapatıp yeniden başlatmayı deneyin. Sorun devam ederse metre hatalı biçimlendirilmiş olabilir. Yazım ve noktalama işaretlerini iki kez kontrol edin.
-
“Uygulama veya LightScript sürekli çöküyor”
- Bu genellikle hatalı biçimlendirilmiş bir metreden kaynaklanır. Eksik veya fazla nitelikler uygulamayı veya kodu çökertebilir. Metreleriniz doğruysa sonsuz döngüler veya bildirilmemiş değişkenler gibi sorunlara bakın.
-
“Metrem görünüyor ancak ekranın doğru alanını takip etmiyor”
- Normalleştirilmiş koordinatlar hatalı olabilir. Unutmayın: x / ekran genişliği, y / ekran yüksekliği. Matematik güçlü yanınız değilse, doğru ekran alanını belirlemeye yardımcı olmak için metrenin genişliğini veya yüksekliğini artırmayı deneyin. Dikdörtgen metrelerin denetçide dikey olarak ezilmiş görüneceğini aklınızda bulundurun.
-
“Metrem bir çözünürlükte çalışıyor ancak diğerlerinde çalışmıyor”
- Neyse ki dinamik UI için birden fazla metre gerekmeyecek. Birden fazla çözünürlük için uyarlanmış doğrusal metre örneği için aşağıya bakın.
<meta meter="health" tags="vlc,fortnite" x= ".05" y=".9" width=".189" h="70-140" s="40-100" l="40-100" type="linear"> <resolution size="3440x1440" x="0.1666" y="0.8993" width="0.1541"/> <resolution size="2560x1080" x="0.1666" y="0.8993" width="0.1541"/> <resolution size="1920x1080" x="0.0557" y="0.9083" width="0.199"/></meta>Gördüğünüz gibi, metreyi özellikle 3840x2160 ve 2560x1080 çözünürlükler için ayarladım. Diğer tüm çözünürlükler varsayılan olarak orijinal metreyi kullanır.
-
“Metrem doğru yerleştirilmiş ancak tetiklenmiyor”
- LightScript geliştiricisi olarak bu yaygın bir sorun olacak. Alan ve doğrusal metreler, degradelerde veya şeffaf UI’da tutarsız davranabilir. Bir HSL kaydırıcısı (bunun gibi) açın ve renkler eşleşene kadar ekranınızı gözlemleyin. Metre tutarlı şekilde tetiklenene kadar ton, doygunluk ve parlaklıkta geniş aralıklarla başlayın, ardından daraltın. OCR metreler için, hedeflediğiniz kelimenin veya sayının mümkün olduğunca az ek içerikle birlikte tamamının metreye dahil edildiğinden emin olun. OCR metrelerin çalışacağı metin boyutu veya ekran çözünürlüğü konusunda bir sınır vardır. Bir 1920x1080 ekranı dolduran büyük “VICTORY” metni üzerine OCR metre mi koyuyorsunuz? Sorun yok. Ama 1280x720’de bir sohbet kutusunda deneyin ve sınırlı sonuçlar göreceksiniz. Ayrıca, OCR için metin ve arka plan arasındaki yüksek kontrast idealdir; beyaz arka plan üzerindeki beyaz metin okunmayacaktır.
-
“Metrem çok hızlı tetikleniyor veya sürekli tetikleniyor”
- Tebrikler, metreniz çalışıyor; ancak saniyede üç kez tetiklenmek muhtemelen istediğiniz şey değildir. Şeffaf UI, renkli ortamlar, patlamalar ve hatta ara sinematikler metrelerinizin yanlış veya hızlı aktivasyonuna neden olabilir. Bu her zaman bir zorluk olacaktır. Basit bir geçici çözüm, bir sonraki Snippet’ler bölümünde özetlenen Metre sınıfını kullanmaktır.