Smart Tags
Oprócz pól wejściowych użytkownika, meta-tagi mogą również pobierać dane z API SignalRGB. Są one nazywane miernikami, które różnią się od klasy Meter omawianej w sekcji Snippets. Dostępne są cztery typy mierników wizualnych: liniowy, obszarowy, ocr_textmatch i ocr_numeric.
Ponadto API oferuje siedem właściwości treści: poziom audio, szerokość audio, gęstość audio, częstotliwość audio, odcień strefy, nasycenie strefy i jasność strefy.
Mierniki
Dział zatytułowany „Mierniki”Wszystkie mierniki mają cztery wspólne atrybuty:
| Atrybuty | Opis |
|---|---|
| Meter | Definiuje nazwę zmiennej, dostępną przez engine.vision.meter, gdzie meter to twoja wybrana nazwa. |
| Type | Określa typ miernika: linear, area, ocr_textmatch lub ocr_numeric |
| X | Współrzędna X w formie znormalizowanej. Miernik jest rysowany od lewego górnego rogu. |
| Y | Współrzędna Y w formie znormalizowanej. |
Znormalizowane współrzędne
Dział zatytułowany „Znormalizowane współrzędne”Współrzędne X i Y, a także wysokość i szerokość, muszą być podane jako wartości znormalizowane. Na przykład, jeśli gram w grę przy rozdzielczości 1920x1080 i chcę umieścić mały miernik mniej więcej w połowie lewej strony ekranu, określam punkt początkowy (lewy górny róg) miernika jako 50 pikseli od lewej i 500 pikseli w dół od lewego górnego rogu ekranu.
To daje mi:
x = 50, y = 500.
Aby przekonwertować to na znormalizowane współrzędne, dzielę x przez szerokość ekranu (1920) i y przez wysokość ekranu (1080), co daje (zaokrąglone i w odpowiednim formacie):
x = “.026”, y = “.463”
Chociaż ta konwersja teoretycznie powinna sprawić, że miernik będzie działał dla każdej rozdzielczości o proporcjach 16:9, wiele gier ma drobne zmiany UI między rozdzielczościami. Sposób formatowania mierników dla różnych rozdzielczości jest omówiony w sekcji rozwiązywania problemów na dole tej strony.
Miernik liniowy
Dział zatytułowany „Miernik liniowy”Miernik liniowy zwraca procent pikseli wzdłuż poziomej linii pasujących do określonego zakresu HSL, z wartością od 0,0 do 1,0. Na przykład miernik liniowy obejmujący pełną szerokość zielonego paska zdrowia zwraca wartość 0,5 przy połowie zdrowia.
<meta meter="myLinear" type="linear" x=".1729" y=".9740" width=".0390" h="0-360" s="0-10" l="90-100">Mierniki liniowe wymagają czterech dodatkowych atrybutów:
| Atrybut | Opis |
|---|---|
| Width | Wartość szerokości wyrażona w formie znormalizowanej |
| H | Składowa odcienia HSL, od 0 do 360 |
| S | Składowa nasycenia HSL, od 0% do 100% |
| L | Składowa jasności HSL, od 0% do 100% |
Miernik obszarowy
Dział zatytułowany „Miernik obszarowy”Miernik obszarowy zwraca procent pikseli wewnątrz prostokątnego obszaru mieszczących się w określonym zakresie HSL, z wartościami od 0,0 do 1,0. Ten typ miernika może być używany do wykrywania większych elementów UI, takich jak pola tekstowe lub obszary minimapy.
<meta meter="myArea" type="area" x=".1729" y=".9740" width=".0390" height=".02" h="0-360" s="0-10" l="90-100">Mierniki obszarowe wymagają pięciu dodatkowych atrybutów:
| Atrybut | Opis |
|---|---|
| Width | Wartość szerokości wyrażona w formie znormalizowanej |
| Height | Wartość wysokości wyrażona w formie znormalizowanej |
| H | Składowa odcienia HSL, od 0 do 360 |
| S | Składowa nasycenia HSL, od 0% do 100% |
| L | Składowa jasności HSL, od 0% do 100% |
Miernik OCR do dopasowywania tekstu
Dział zatytułowany „Miernik OCR do dopasowywania tekstu”Ten miernik używa Optycznego Rozpoznawania Znaków (OCR) do wyszukiwania konkretnego ciągu znaków w zdefiniowanym prostokątnym obszarze na ekranie. Jeśli ciąg zostanie znaleziony, zwraca 1; jeśli nie zostanie znaleziony, zwraca 0; a jeśli jest niepewny, zwraca -1.
<meta meter="myTextOCR" type="ocr_textmatch" x=".1729" y=".9740" width=".0390" height=".02" string="my string" confidence="70">Mierniki OCR do dopasowywania tekstu wymagają czterech dodatkowych atrybutów:
| Atrybut | Opis |
|---|---|
| Width | Szerokość w formie znormalizowanej. |
| Height | Wysokość w formie znormalizowanej. |
| String | Ciąg znaków do wyszukania. Rozróżnia wielkość liter. |
| Confidence | Wartość od 0 do 100 wskazująca, jak pewny musi być miernik dopasowania. Domyślnie 70, jeśli nie podano. |
Numeryczny miernik OCR
Dział zatytułowany „Numeryczny miernik OCR”Ten miernik używa Optycznego Rozpoznawania Znaków (OCR) do wykrywania wartości numerycznych w prostokątnym obszarze na ekranie. W przypadku powodzenia zwraca liczbę jako liczbę całkowitą; w przypadku niepowodzenia zwraca -1.
<meta meter="myNumOCR" type="ocr_numeric" x=".1729" y=".9740" width=".0390" height=".02" confidence="70">Numeryczne mierniki OCR wymagają trzech dodatkowych atrybutów:
| Atrybut | Opis |
|---|---|
| Width | Szerokość w formie znormalizowanej. |
| Height | Wysokość w formie znormalizowanej. |
| Confidence | Wartość od 0 do 100 wskazująca, jak pewny musi być miernik dopasowania. Domyślnie 70, jeśli nie podano. |
Właściwości treści
Dział zatytułowany „Właściwości treści”Właściwości treści to mierniki o wyższej gęstości pochodzące bezpośrednio z API.
Właściwości audio
Dział zatytułowany „Właściwości audio”- engine.audio.level zwraca bieżący poziom audio w decybelach.
- engine.audio.width podaje postrzeganą szerokość stereo przychodzącego audio jako stosunek od 0 do 1.
- engine.audio.density podaje gęstość częstotliwości przychodzącego audio, również jako stosunek od 0 do 1 — biały szum produkuje wartości bliskie 1,0, podczas gdy czyste tony zwracają wartości bliższe 0.
- engine.audio.freq zwraca tablicę 200 elementów, z których każdy reprezentuje bieżący poziom konkretnego pasma częstotliwości.
Właściwości ekranu
Dział zatytułowany „Właściwości ekranu”- engine.zone.hue zwraca tablicę 560 elementów, z których każdy reprezentuje wartość odcienia punktu na ekranie. Te punkty są próbkowane z siatki 28 x 20.
- engine.zone.saturation zwraca tablicę 560 elementów, z których każdy reprezentuje nasycenie punktu ekranu, próbkowanego z tej samej siatki 28 x 20.
- engine.zone.lightness zwraca tablicę 560 elementów, z których każdy podaje wartość jasności punktu ekranu, również próbkowanego z siatki 28 x 20.
Rozwiązywanie problemów
Dział zatytułowany „Rozwiązywanie problemów”Podczas pisania kodu mogą wystąpić problemy. Poniżej przedstawiono kilka typowych problemów z miernikami i sposoby ich rozwiązania:
-
“Mój miernik lub kontrolka użytkownika nie pojawia się w aplikacji”
- Spróbuj całkowicie zamknąć i ponownie uruchomić aplikację. Jeśli problem nie ustępuje, miernik może być nieprawidłowo sformatowany. Sprawdź pisownię i interpunkcję.
-
“Aplikacja lub LightScript ciągle się zawiesza”
- Jest to często spowodowane nieprawidłowo sformułowanym miernikiem. Brakujące lub nadmiarowe atrybuty mogą powodować zawieszanie się aplikacji lub kodu. Jeśli twoje mierniki są poprawne, szukaj problemów takich jak nieskończone pętle lub niezadeklarowane zmienne.
-
“Mój miernik pojawia się, ale nie śledzi właściwego obszaru ekranu”
- Znormalizowane współrzędne mogą być nieprawidłowe. Pamiętaj: to x / szerokość_ekranu, y / wysokość_ekranu. Jeśli matematyka nie jest twoją mocną stroną, spróbuj zwiększyć szerokość lub wysokość miernika, aby zidentyfikować właściwy obszar ekranu. Pamiętaj, że prostokątne mierniki wyglądają na pionowo ściśnięte w inspektorze.
-
“Mój miernik działa przy jednej rozdzielczości, ale nie przy innych”
- Na szczęście nie potrzebujesz wielu mierników dla dynamicznego UI. Zobacz poniżej przykład miernika liniowego dostosowanego dla wielu rozdzielczości.
<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>Jak widać, dostosowałem miernik specjalnie dla rozdzielczości 3840x2160 i 2560x1080. Wszystkie inne rozdzielczości domyślnie używają oryginalnego miernika.
-
“Mój miernik jest poprawnie umieszczony, ale nie aktywuje się”
- Dla dewelopera LightScript będzie to częsty problem. Mierniki obszarowe i liniowe mogą być trudne przy gradientowym lub przezroczystym UI. Otwórz suwak HSL i obserwuj swój ekran, aż kolory będą pasować. Zacznij od szerokich zakresów odcienia, nasycenia i jasności, aż miernik będzie się aktywować konsekwentnie, a następnie zawęź. W przypadku mierników OCR upewnij się, że całe słowo lub liczba, którą szukasz, mieści się w mierniku, z jak najmniejszą ilością dodatkowej treści. Istnieje limit rozmiaru tekstu lub rozdzielczości ekranu, przy której mierniki OCR działają. Umieszczenie miernika OCR na dużym tekście “VICTORY” wypełniającym ekran 1920x1080? Żaden problem. Ale spróbuj to zrobić w oknie czatu przy 1280x720 i zobaczysz ograniczone wyniki. Ponadto wysoki kontrast między tekstem a tłem jest idealny dla OCR — biały tekst na białym tle nie będzie odczytywany.
-
“Mój miernik aktywuje się zbyt często lub cały czas”
- Gratulacje, twój miernik działa, ale aktywowanie trzy razy na sekundę prawdopodobnie nie jest tym, czego chcesz. Przezroczysty UI, kolorowe środowiska, eksplozje, a nawet przerywniki filmowe mogą powodować fałszywe lub szybkie aktywacje twoich mierników. To zawsze będzie wyzwanie. Prostym rozwiązaniem jest użycie klasy Meter, jak opisano w następnej sekcji, Snippets.