Defold udostępnia właściwości (ang. properties) dla obiektów gry, komponentów oraz węzłów GUI, które można odczytywać, ustawiać i animować. Istnieje kilka rodzajów właściwości:
W zależności od miejsca, w którym znajduje się właściwość, dostęp do niej uzyskuje się za pomocą funkcji ogólnej lub funkcji przeznaczonej do właściwości. Wiele z tych właściwości można automatycznie animować. Zaleca się animowanie właściwości za pomocą wbudowanego systemu, zarówno z powodów wydajnościowych, jak i wygody, zamiast manipulować nimi samodzielnie (wewnątrz funkcji update()
).
Złożone właściwości typu vector3
, vector4
lub quaternion
eksponują również swoje składowe (x
, y
, z
i w
). Możesz adresować składowe indywidualnie, dodając do nazwy właściwości kropkę (.
) i nazwę składowej. Na przykład, aby ustawić składową x pozycji obiektu gry:
-- Ustaw x pozycji "game_object" na 10.
go.set("game_object", "position.x", 10)
Funkcje go.get()
, go.set()
i go.animate()
przyjmują jako pierwszy parametr odniesienie oraz identyfikator właściwości jako drugi. Odniesienie identyfikuje obiekt gry (ang. game object) lub komponent (ang. component) i może być ciągiem znaków, haszem lub adresem URL. Adresy URL są szczegółowo omówione w instrukcji dotyczącej adresowania. Identyfikator właściwości to ciąg znaków lub hash, który określa właściwość.
-- Ustaw skalę x komponentu sprite
local url = msg.url("#sprite")
local prop = hash("scale.x")
go.set(url, prop, 2.0)
Dla węzłów GUI, identyfikator węzła jest podawany jako pierwszy parametr do funkcji przeznaczonej do właściwości:
-- Pobierz kolor przycisku
local node = gui.get_node("button")
local color = gui.get_color(node)
Wszystkie obiekty gry i niektóre typy komponentów mają właściwości, które można odczytywać i modyfikować w czasie rzeczywistym. Wartości te można odczytać za pomocą go.get()
i zaktualizować za pomocą go.set()
. W zależności od typu wartości właściwości, można animować je za pomocą go.animate()
. Kilka wybranych właściwości jest przeznaczonych tylko do odczytu.
get
go.get()
.get+set
go.get()
i aktualizować za pomocą go.set()
. Wartości numeryczne można animować za pomocą go.animate()
.WŁAŚCIWOŚCI OBIEKTÓW GRY
Właściwość | Opis | Typ | |
---|---|---|---|
position | Lokalna pozycja obiektu gry. | vector3 |
get+set |
rotation | Lokalna rotacja obiektu gry wyrażona jako kwaternion. | quaternion |
get+set |
euler | Lokalna rotacja obiektu gry wyrażona jako kąty Eulera. | vector3 |
get+set |
scale | Lokalna nieliniowa skala obiektu gry, wyrażona jako wektor, w którym każdy składnik zawiera mnożnik wzdłuż każdej osi. Przykładowo, aby podwoić rozmiar w osiach x i y, użyj vmath.vector3(2.0, 2.0, 0). | vector3 |
get+set |
Istnieją także konkretne funkcje do pracy z transformacją obiektu gry, takie jak go.get_position()
, go.set_position()
, go.get_rotation()
, go.set_rotation()
, go.get_scale()
i go.set_scale()
.
WŁAŚCIWOŚCI KOMPONENTÓW SPRITE
Właściwość | Opis | Typ | |
---|---|---|---|
size | Rozmiar sprite’a nieprzeskalowany - jego rozmiar pobierany z atlasu źródłowego. | vector3 |
get |
image | Skrót hasza ścieżki tekstury sprite’a. | hash |
get |
scale | Nieliniowa skala sprite’a. | vector3 |
get+set |
material | Materiał używany przez sprite’a. | hash |
get+set |
cursor | Pozycja (między 0 a 1) wskaźnika odtwarzania. | number |
get+set |
playback_rate | Ilość klatek na sekundę animacji flipbook. | number |
get+set |
WŁAŚCIWOŚCI KOMPONENTÓW OBIEKTÓW KOLIZJI
Właściwość | Opis | Typ | |
---|---|---|---|
mass | Masa obiektu kolizyji. | number |
get |
linear_velocity | Aktualna prędkość liniowa obiektu kolizyji. | vector3 |
get |
angular_velocity | Aktualna prędkość kątowa obiektu kolizyji. | vector3 |
get |
linear_damping | Dławienie liniowe obiektu kolizyji. | vector3 |
get+set |
angular_damping | Dławienie kątowe obiektu kolizyji. | vector3 |
get+set |
WŁAŚCIWOŚCI KOMPONENTÓW MODELU 3D
Właściwość | Opis | Typ | |
---|---|---|---|
animation | Aktualna animacja. | hash |
get |
texture0 | Skrót hasza ścieżki tekstury modelu. | hash |
get |
cursor | Pozycja (między 0 a 1) wskaźnika odtwarzania. | number |
get+set |
playback_rate | Prędkość odtwarzania animacji. Mnożnik prędkości odtwarzania animacji. | number |
get+set |
material | Materiał używany przez model. | hash |
get+set |
WŁAŚCIWOŚCI KOMPONENTÓW ETYKIETY
Właściwość | Opis | Typ | |
---|---|---|---|
scale | Skala etykiety. | vector3 |
get+set |
color | Kolor etykiety. | vector4 |
get+set |
outline | Kolor konturu etykiety. | vector4 |
get+set |
shadow | Kolor cienia etykiety. | vector4 |
get+set |
size | Rozmiar etykiety. Rozmiar ogranicza tekst, jeśli jest włączona linia przerwy. | vector3 |
get+set |
material | Materiał używany przez etykietę. | hash |
get+set |
font | Czcionka używana przez etykietę. | hash |
get+set |
Węzły GUI również posiadają właściwości, ale są odczytywane i zapisywane za pomocą specjalnych funkcji getterów i setterów z API gui
. Dla każdej właściwości istnieje funkcja gettera i settera. Istnieje także zestaw stałych zdefiniowanych do użycia jako odniesienie do właściwości podczas animacji. Jeśli potrzebujesz odnosić się do oddzielnych składowych właściwości, musisz używać nazwy ciągu znaków właściwości lub hasza nazwy ciągu znaków.
GUI nodes also contain properties, but they are read and written through special getter and setter functions. For each property there exists one get- and one set- function. There is also a set of constants defined to use as reference to the properties when animating them. If you need to refer to separate property components you have to use the string name of the property, or a hash of the string name.
position
(lub gui.PROP_POSITION
)rotation
(lub gui.PROP_ROTATION
)scale
(lub gui.PROP_SCALE
)color
(lub gui.PROP_COLOR
)outline
(lub gui.PROP_OUTLINE
)shadow
(lub gui.PROP_SHADOW
)size
(lub gui.PROP_SIZE
)fill_angle
(lub gui.PROP_FILL_ANGLE
)inner_radius
(lub gui.PROP_INNER_RADIUS
)slice9
(lub gui.PROP_SLICE9
)Zauważ, że wszystkie wartości koloru są zakodowane w vector4, gdzie składniki odpowiadają wartościom RGBA:
x
y
z
w
GUI NODE PROPERTIES
Właściwość | Opis | Typ | |
---|---|---|---|
color | Kolor przedniej strony węzła. | vector4 |
gui.get_color() gui.set_color() |
outline | Kolor konturu węzła. | vector4 |
gui.get_outline() gui.set_outline() |
position | Pozycja węzła. | vector3 |
gui.get_position() gui.set_position() |
rotation | Obrót węzła wyrażony w kątach Eulera - stopnie obrócone wokół każdej osi. | vector3 |
gui.get_rotation() gui.set_rotation() |
scale | Skala węzła wyrażona jako mnożnik wzdłuż każdej osi. | vector3 |
gui.get_scale() gui.set_scale() |
shadow | Kolor cienia węzła. | vector4 |
gui.get_shadow() gui.set_shadow() |
size | Rozmiar węzła niezeskalowany. | vector3 |
gui.get_size() gui.set_size() |
fill_angle | Kąt wypełnienia węzła typu pie wyrażony w stopniach przeciwnie do ruchu wskazówek zegara. | number |
gui.get_fill_angle() gui.set_fill_angle() |
inner_radius | Wewnętrzny promień węzła typu pie. | number |
gui.get_inner_radius() gui.set_inner_radius() |
slice9 | Odległości brzegowe węzła typu slice9. | vector4 |
gui.get_slice9() gui.set_slice9() |
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB