All tutorials

Pojmenujte, co váš program vytváří

Beginner 10 min engine

Program může vytvořit stovku objektů a v Scene Graph nezobrazit ani jeden. Pojmenování je akt, díky kterému se objekt objeví, a funguje na sprite, text, 3D objekty, světla i částice.

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#

  1. 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
    
  2. 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.

  3. Pojmenujte sprite. Přidejte jeden řádek za SpritePosition a 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.

  4. 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ě.

  5. 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ř")
    
  6. 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 v sprite; 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říkazCo 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#