All tutorials

Navngi det du skaper

Beginner 10 min engine

Et program kan bygge hundre objekter og ikke vise et eneste av dem i Scene Graph. Å navngi er handlingen som får ett til å dukke opp, og det fungerer på sprites, tekst, 3D-objekter, lys og partikler.

Dette lærer du#

Du skal skrive et lite BASIC-program, se Scene Graph forbli tom mens det tydelig fungerer, og deretter få hvert objekt til å dukke opp ved å navngi det. Til slutt vil du vite hvorfor treet skjuler det meste av det et program bygger, og hvordan du velger hva det viser.

Før du starter#

  • Engine er en støttet modul. Inkwell, Vectra og PDF Studio er de tre gratis modulene.
  • Ingen tidligere veiledning nødvendig. Alt nedenfor er ett skript.
  • Hold Scene Graph-panelet åpent, ved siden av viewporten. Det er hele poenget med øvelsen.

Steg#

  1. Åpne Engine, start en tom scene, og åpne skripteditoren. Lim inn dette og trykk 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. Se på Scene Graph. Spriten er på skjermen, lyset er tent, og treet viser ingenting. Dette er ikke en feil, og det er hele lærdommen.

    Tips: panelet viser et antall unavngitte objekter. Det tallet er programmets output som treet bevisst ikke listet opp.

  3. Navngi spriten. Legg til én linje etter SpritePosition, og trykk Play igjen:

    SpriteName(sprite, "player")
    

    player dukker opp i treet. Ingenting annet endret seg på skjermen: å navngi skaper, flytter eller tegner ingenting. Det publiserer.

  4. Navngi lyset også, med kommandoen som kom med denne idéen:

    LightName(1, "sun")
    

    To oppføringer nå. Klikk på én: inspektøren følger med, akkurat som den ville gjort for et objekt du hadde plassert for hånd.

  5. Legg til partikler og navngi dem, slik at du ser at regelen ikke bare gjelder sprites:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "smoke")
    
  6. Fjern nå de tre navngivingslinjene og trykk Play. Scenen er identisk, treet er tomt igjen, og antallet unavngitte er tilbake på tre.

    Advarsel: et navn er ikke en id. SpriteName(sprite, "player") merker spriten hvis id er i sprite; det lar deg ikke finne den igjen senere via det merket. Id-en er fortsatt håndtaket ditt.

Resultat#

Du kan bestemme hva programmet ditt viser. En prop, et lys og en emitter dukker opp under navnene du valgte; de hundrevis av tekniske objektene et ekte program bygger, holder seg unna.

Hvorfor regelen finnes#

Et klassisk BASIC-program skaper objekter hele tiden: en sprite per kule, en tekst per poengsiffer, et bilde per rute. Å liste opp alle sammen ville gjort Scene Graph uleselig i løpet av sekunder, og de tre objektene du faktisk bryr deg om, ville drukne i støyen.

Så treet viser ikke alt og skjuler resten ved å gjette. Det viser det du har navngitt, og det teller resten slik at ingenting forsvinner stille. Filteret er ditt, ikke motorens.

Hvilke objekter kan navngis#

KommandoHva den navngir
SpriteName(id, name)En sprite
TextName(id, name)Et tekstobjekt
ObjectName(id, name)Et 3D-objekt
LightName(id, name)Et punkt- eller retningslys
ParticlesName(id, name)En partikkelemitter, 2D eller 3D

Lyder, bilder, memblocks og fonter har ingen linje i Scene Graph: de er ressurser, ikke sceneobjekter, og å navngi dem ville ikke vist noe noe sted.

Gå videre#