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#
-
Å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 -
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.
-
Navngi spriten. Legg til én linje etter
SpritePosition, og trykk Play igjen:SpriteName(sprite, "player")playerdukker opp i treet. Ingenting annet endret seg på skjermen: å navngi skaper, flytter eller tegner ingenting. Det publiserer. -
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.
-
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") -
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 isprite; 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#
| Kommando | Hva 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#
- Resten av dialekten: BASIC-språket.
- Hver navngivingskommando med sine parametere: Studio-familien.