Czego się nauczysz#
Napiszesz mały program w BASIC, zobaczysz, że Scene Graph pozostaje pusty, mimo że program wyraźnie działa, a potem sprawisz, że każdy obiekt się pojawi, nadając mu nazwę. Na koniec będziesz wiedzieć, dlaczego drzewo ukrywa większość tego, co buduje program, i jak wybrać, co ono pokazuje.
Zanim zaczniesz#
- Engine to moduł finansowany społecznościowo. Inkwell, Vectra i PDF Studio to trzy darmowe moduły.
- Nie jest potrzebny żaden wcześniejszy tutorial. Wszystko poniżej to jeden skrypt.
- Trzymaj otwarty panel Scene Graph, obok viewportu. To sedno tego ćwiczenia.
Kroki#
-
Otwórz Engine, zacznij od pustej sceny i otwórz edytor skryptów. Wklej to i naciśnij Play:
image = LoadImage("hero.png") sprite = CreateSprite(image) SpritePosition(sprite, 100.0, 120.0) CreatePointLight(1, 0.0, 5.0, 0.0, 10.0, 255, 255, 255) DO Sync() LOOP -
Spójrz na Scene Graph. Sprite jest na ekranie, światło się świeci, a drzewo pokazuje nic. To nie błąd, to cała lekcja.
Wskazówka: panel pokazuje liczbę nienazwanych obiektów. Ta liczba to wynik działania twojego programu, którego drzewo celowo nie wypisało.
-
Nadaj nazwę sprite'owi. Dodaj jedną linię po
SpritePositioni naciśnij Play ponownie:SpriteName(sprite, "gracz")graczpojawia się w drzewie. Na ekranie nic więcej się nie zmieniło: nadawanie nazwy niczego nie tworzy, nie przesuwa ani nie rysuje. To publikuje. -
Nadaj nazwę też światłu, poleceniem, które przyszło razem z tym pomysłem:
LightName(1, "słońce")Teraz są dwa wpisy. Kliknij jeden: inspektor podąża za nim, dokładnie tak, jak zrobiłby to dla obiektu umieszczonego ręcznie.
-
Dodaj cząsteczki i nadaj im nazwę, żeby zobaczyć, że ta zasada nie dotyczy tylko sprite'ów:
CreateParticles(1, 200.0, 200.0) ParticlesName(1, "dym") -
Teraz usuń trzy linie nadające nazwy i naciśnij Play. Scena jest identyczna, drzewo znowu jest puste, a liczba nienazwanych obiektów wraca do trzech.
Uwaga: nazwa to nie id.
SpriteName(sprite, "gracz")nadaje etykietę sprite'owi, którego id znajduje się w zmiennejsprite; to nie pozwala odnaleźć go później po tej etykiecie. Id pozostaje twoim uchwytem.
Efekt#
Możesz decydować, co pokazuje twój program. Prop, światło i emiter pojawiają się pod nazwami, jakie im nadano; setki technicznych obiektów, które tworzy prawdziwy program, pozostają poza drogą.
Dlaczego istnieje ta zasada#
Klasyczny program w BASIC bez przerwy tworzy obiekty: sprite'a na pocisk, tekst na cyfrę wyniku, obraz na kafelek. Wypisanie ich wszystkich sprawiłoby, że Scene Graph stałby się nieczytelny w kilka sekund, a trzy obiekty, na których naprawdę ci zależy, zgubiłyby się w szumie.
Drzewo nie pokazuje więc wszystkiego i nie ukrywa reszty przez zgadywanie. Pokazuje to, co nazwano, i liczy resztę, żeby nic nie znikało po cichu. Ten filtr należy do ciebie, nie do silnika.
Które obiekty można nazwać#
| Polecenie | Co nazywa |
|---|---|
SpriteName(id, name) | Sprite |
TextName(id, name) | Obiekt tekstowy |
ObjectName(id, name) | Obiekt 3D |
LightName(id, name) | Światło punktowe lub kierunkowe |
ParticlesName(id, name) | Emiter cząsteczek, 2D lub 3D |
Dźwięki, obrazy, memblocki i czcionki nie mają swojej linii w Scene Graph: to zasoby, a nie obiekty sceny, a nadanie im nazwy niczego nigdzie nie pokaże.
Idź dalej#
- Reszta dialektu: język BASIC.
- Każde polecenie nadające nazwę wraz z jego parametrami: rodzina Studio.