All tutorials

Nomina ciò che il tuo programma crea

Beginner 10 min engine

Un programma può costruire cento oggetti e non mostrarne nessuno nella Scene Graph. Nominare è l'atto che ne fa apparire uno, e funziona su sprite, testo, oggetti 3D, luci e particelle.

Cosa imparerai#

Scriverai un piccolo programma BASIC, osserverai la Scene Graph restare vuota mentre il programma funziona chiaramente, e poi farai apparire ogni oggetto nominandolo. Alla fine saprai perché l'albero nasconde la maggior parte di ciò che un programma costruisce, e come scegliere cosa mostrare.

Prima di iniziare#

  • Engine è un modulo sostenuto. Inkwell, Vectra e PDF Studio sono i tre gratuiti.
  • Non serve nessun tutorial precedente. Tutto quello che segue è un unico script.
  • Tieni aperto il pannello Scene Graph, accanto al viewport. È il punto centrale dell'esercizio.

Passaggi#

  1. Apri Engine, avvia una scena vuota, e apri l'editor di script. Incolla questo e premi 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. Guarda la Scene Graph. Lo sprite è a schermo, la luce è accesa, e l'albero non mostra nulla. Non è un bug, ed è l'intera lezione.

    Suggerimento: il pannello mostra un conteggio degli oggetti senza nome. Quel numero è l'output del tuo programma che l'albero deliberatamente non ha elencato.

  3. Nomina lo sprite. Aggiungi una riga dopo SpritePosition, e premi Play di nuovo:

    SpriteName(sprite, "player")
    

    player appare nell'albero. Nulla è cambiato a schermo: nominare non crea, sposta o disegna nulla. Pubblica.

  4. Nomina anche la luce, con il comando arrivato insieme a questa idea:

    LightName(1, "sun")
    

    Ora ci sono due voci. Clicca su una: l'inspector la segue, esattamente come farebbe per un oggetto che avessi posizionato a mano.

  5. Aggiungi delle particelle e nominale, così vedi che la regola non riguarda solo gli sprite:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "smoke")
    
  6. Ora rimuovi le tre righe di denominazione e premi Play. La scena è identica, l'albero è di nuovo vuoto, e il conteggio dei senza nome torna a tre.

    Attenzione: un nome non è un id. SpriteName(sprite, "player") etichetta lo sprite il cui id sta in sprite; non ti permette di ritrovarlo in seguito tramite quell'etichetta. L'id resta il tuo riferimento.

Risultato#

Puoi decidere cosa mostra il tuo programma. Un prop, una luce e un emettitore appaiono sotto i nomi che hai scelto; le centinaia di oggetti tecnici che un programma reale costruisce restano fuori dai piedi.

Perché questa regola esiste#

Un classico programma BASIC crea oggetti in continuazione: uno sprite per proiettile, un testo per cifra del punteggio, un'immagine per tile. Elencarli tutti renderebbe la Scene Graph illeggibile in pochi secondi, e i tre oggetti a cui tieni davvero si perderebbero nel rumore.

Quindi l'albero non mostra tutto e non nasconde il resto indovinando. Mostra ciò che hai nominato, e conta il resto in modo che nulla sparisca in silenzio. Il filtro è tuo, non del motore.

Quali oggetti possono essere nominati#

ComandoCosa nomina
SpriteName(id, name)Uno sprite
TextName(id, name)Un oggetto di testo
ObjectName(id, name)Un oggetto 3D
LightName(id, name)Una luce puntiforme o direzionale
ParticlesName(id, name)Un emettitore di particelle, 2D o 3D

Suoni, immagini, memblock e font non hanno una riga nella Scene Graph: sono risorse, non oggetti di scena, e nominarli non mostrerebbe nulla da nessuna parte.

Per approfondire#