Co se naučíte#
Napíšete malý program v BASICu, budete sledovat, jak Scene Graph zůstává prázdný, přestože program zjevně funguje, a pak necháte jednotlivé objekty objevit se jejich pojmenováním. Na konci budete vědět, proč strom skrývá většinu toho, co program vytvoří, a jak si vybrat, co ukazuje.
Než začnete#
- Engine je podpořený modul. Inkwell, Vectra a PDF Studio jsou tři moduly, které jsou zdarma.
- Není potřeba žádný předchozí tutoriál. Vše níže je jeden skript.
- Nechte panel Scene Graph otevřený, vedle viewportu. To je smysl celého cvičení.
Kroky#
-
Otevřete Engine, spusťte prázdnou scénu a otevřete editor skriptů. Vložte tohle a stiskněte 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 -
Podívejte se na Scene Graph. Sprite je na obrazovce, světlo svítí, a strom neukazuje nic. Není to chyba, a je to celá lekce.
Tip: panel zobrazuje počet nepojmenovaných objektů. Toto číslo je výstup vašeho programu, který strom záměrně nevypsal.
-
Pojmenujte sprite. Přidejte jeden řádek za
SpritePositiona znovu stiskněte Play:SpriteName(sprite, "hráč")hráčse objeví ve stromu. Na obrazovce se nezměnilo nic jiného: pojmenování nic nevytváří, nepřesouvá ani nekreslí. Publikuje. -
Pojmenujte i světlo, příkazem, který přišel s touto myšlenkou:
LightName(1, "slunce")Teď jsou tam dvě položky. Klikněte na jednu: inspektor ji sleduje přesně tak, jako by to udělal u objektu, který byste umístili ručně.
-
Přidejte částice a pojmenujte je, abyste viděli, že pravidlo se netýká jen sprite:
CreateParticles(1, 200.0, 200.0) ParticlesName(1, "kouř") -
Teď odstraňte všechny tři pojmenovávací řádky a stiskněte Play. Scéna je identická, strom je zase prázdný a počet nepojmenovaných je zpátky na třech.
Varování: jméno není id.
SpriteName(sprite, "hráč")označí sprite, jehož id je vsprite; neumožní vám ho podle toho jména později najít. Id zůstává vaším úchytem.
Výsledek#
Můžete rozhodnout, co váš program ukazuje. Prop, světlo a emitor se objeví pod jmény, která jste zvolili; stovky technických objektů, které vytvoří skutečný program, zůstanou stranou.
Proč toto pravidlo existuje#
Klasický program v BASICu vytváří objekty neustále: sprite na každou kulku, text na každou číslici skóre, obrázek na každou dlaždici. Vypsat je všechny by během vteřin udělalo Scene Graph nečitelný, a tři objekty, na kterých vám skutečně záleží, by se ztratily v šumu.
Strom tedy nefunguje tak, že ukáže všechno a zbytek schová podle odhadu. Ukazuje to, co jste pojmenovali, a zbytek počítá, aby nic tiše nezmizelo. Filtr je váš, ne enginu.
Které objekty lze pojmenovat#
| Příkaz | Co pojmenovává |
|---|---|
SpriteName(id, name) | Sprite |
TextName(id, name) | Textový objekt |
ObjectName(id, name) | 3D objekt |
LightName(id, name) | Bodové nebo směrové světlo |
ParticlesName(id, name) | Emitor částic, 2D nebo 3D |
Zvuky, obrázky, memblocky a fonty nemají ve Scene Graph žádný řádek: jsou to zdroje, ne scénové objekty, a jejich pojmenování by nikde nic neukázalo.
Co dál#
- Zbytek dialektu: jazyk BASIC.
- Každý pojmenovávací příkaz s jeho parametry: rodina Studio.