label.md 4.7 KB


title: Etykieta w Defoldzie

brief: Ta instrukcja wyjaśnia jak korzystać z etykiety w celu wyświetlania tekstu w grach.

Etykieta (Label)

Komponent Etykieta (ang. Label) renderuje fragment tekstu na ekranie w przestrzeni gry. Domyślnie jest sortowany i rysowany razem z wszystkimi grafikami sprite i kafelkami. Komponent ten ma zestaw właściwości, które regulują sposób renderowania tekstu. GUI w Defoldzie obsługuje tekst, ale może być trudno umieścić elementy GUI w przestrzeni świata gry, razem z obiektami gry. Etykiety ułatwiają to.

Tworzenie etykiety

Aby utworzyć komponent etykiety - label, kliknij prawym przyciskiem myszy na obiekcie gry i wybierz Add Component ▸ Label.

Dodaj etykietę

(Jeśli chcesz utworzyć kilka etykiet na podstawie tego samego szablonu, możesz także utworzyć nowy plik komponentu etykiety: kliknij prawym przyciskiem myszy na folder w panelu Assets i wybierz New... ▸ Label, a następnie dodaj plik jako komponent do dowolnych obiektów gry).

Nowa etykieta

Ustaw właściwość Font na font, który chcesz użyć, i upewnij się, że właściwość Material ma materiał, który pasuje do rodzaju fontu:

Font i materiał

Właściwości etykiety

Oprócz właściwości Id, Position, Rotation i Scale, istnieje kilka specyficznych dla komponentu właściwości (properties):

Text : Zawartość tekstu etykiety.

Size : Rozmiar obwiedni tekstu. Jeśli ustawiona jest Line Break (Łamanie linii), szerokość określa punkt, w którym tekst ma być złamany.

Color : Kolor tekstu.

Outline : Kolor obramowania tekstu.

Shadow : Kolor cienia tekstu.

::: sidenote Należy zauważyć, że domyślny materiał wyłącza renderowanie cieni ze względów wydajnościowych. :::

Leading : Interlinia - skalowalna liczba dla odstępu między liniami. Wartość 0 oznacza brak odstępu między liniami. Domyślnie wynosi 1.

Tracking : Śledzenie - skalowalna liczba dla odstępu między literami. Domyślnie wynosi 0.

Pivot : Punkt obrotu tekstu. Używaj go, aby zmieniać wyrównanie tekstu (patrz poniżej).

Blend Mode : Tryb mieszania do użycia podczas renderowania etykiety.

Line Break : Łamanie linii - wyrównanie tekstu podąża za ustawieniem pivot i ustawienie tej właściwości pozwala na przepływ tekstu na kilka linii. Szerokość komponentu określa, gdzie tekst ma się zawijać. Należy zauważyć, że tekst musi zawierać spacje, aby mógł się złamać.

Font : Zasób fontu do użycia w tej etykiecie.

Material : Materiał do użycia podczas renderowania tej etykiety. Upewnij się, że wybierasz materiał stworzony dla rodzaju czcionki, którą używasz (mapa bitowa (bitmap), pole odległości (distance field) lub BMFont).

Tryby mieszania

: Tryby mieszania - blend-modes opisane są tutaj

Pivot i wyrównanie

Ustawiając właściwość Pivot, możesz zmienić tryb wyrównania tekstu.

Center : Środek - jeśli pivot jest ustawiony na Center, North lub South, tekst jest wyrównywany do środka.

Left : Do lewej - jeśli pivot jest ustawiony na którykolwiek z trybów West, tekst jest wyrównywany do lewej.

Right : Do prawej - jeśli pivot jest ustawiony na którykolwiek z trybów East, tekst jest wyrównywany do prawej.

Wyrównanie tekstu

Manipulacja etykietą w czasie rzeczywistym

Możesz manipulować etykietami w czasie działania programu, uzyskując i ustawiając tekst etykiety oraz różne inne właściwości.

color : Kolor etykiety (typ vector4)

outline : Kolor obrysu etykiety (typ vector4)

shadow : Kolor cienia etykiety (typ vector4)

scale : Skala etykiety, albo typu number dla jednolitej skali, albo vector3 dla indywidualnej skali wzdłuż każdej osi.

size : Rozmiar etykiety (typ vector3)

function init(self)
    -- Ustaw tekst komponentu "my_label" w tym samym obiekcie gry
    -- co ten skrypt.
    label.set_text("#my_label", "New text")
end
function init(self)
    -- Ustaw kolor komponentu "my_label" w tym samym obiekcie gry.
    -- Kolor jest wartością RGBA przechowywaną w wektorze 4-składnikowym.
    local grey = vmath.vector4(0.5, 0.5, 0.5, 1.0)
    go.set("#my_label", "color", grey)

    -- ... i usuń obrys, ustawiając jego alfa na 0 ...
    go.set("#my_label", "outline.w", 0)

    -- ... i powiększ go dwukrotnie wzdłuż osi x
    local scale_x = go.get("#my_label", "scale.x")
    go.set("#my_label", "scale.x", scale_x * 2)
end

Konfiguracja projektu

Plik game.project ma kilka [ustawień projektu związanych z etykietami](/manuals/project-settings#label.