Vad du kommer att lära dig#
Du kommer att skriva ett litet BASIC-program, se Scene Graph förbli tomt trots att det tydligt fungerar, och sedan få varje objekt att synas genom att namnge det. Till slut kommer du att veta varför trädet döljer det mesta av vad ett program bygger, och hur du väljer vad det visar.
Innan du börjar#
- Engine är en stöttad modul. Inkwell, Vectra och PDF Studio är de tre gratis modulerna.
- Ingen tidigare handledning krävs. Allt nedan är ett enda skript.
- Håll panelen Scene Graph öppen, bredvid vyfönstret. Det är hela poängen med övningen.
Steg#
-
Öppna Engine, starta en tom scen, och öppna skripteditorn. Klistra in det här och tryck på 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 -
Titta på Scene Graph. Spriten syns på skärmen, ljuset lyser, och trädet visar ingenting. Det här är inte en bugg, och det är hela lektionen.
Tips: panelen visar ett antal onamngivna objekt. Det talet är ditt programs utdata som trädet medvetet inte listade.
-
Namnge spriten. Lägg till en rad efter
SpritePosition, och tryck på Play igen:SpriteName(sprite, "player")playervisas i trädet. Inget annat förändrades på skärmen: namngivning skapar, flyttar eller ritar ingenting. Det publicerar. -
Namnge ljuset också, med kommandot som hör ihop med den här idén:
LightName(1, "sun")Nu finns det två poster. Klicka på en: inspektorn följer med, precis som den skulle för ett objekt du hade placerat för hand.
-
Lägg till partiklar och namnge dem, så att du ser att regeln inte handlar specifikt om sprites:
CreateParticles(1, 200.0, 200.0) ParticlesName(1, "smoke") -
Ta nu bort de tre namngivningsraderna och tryck på Play. Scenen är identisk, trädet är tomt igen, och antalet onamngivna är tillbaka på tre.
Varning: ett namn är inte ett id.
SpriteName(sprite, "player")märker spriten vars id finns isprite; det låter dig inte hitta den senare via den etiketten. Id:t förblir ditt handtag.
Resultat#
Du kan bestämma vad ditt program visar. En prop, ett ljus och en emitter visas under namnen du valde; de hundratals tekniska objekt som ett riktigt program bygger håller sig undan.
Varför regeln finns#
Ett klassiskt BASIC-program skapar objekt hela tiden: en sprite per projektil, en text per poängsiffra, en bild per bricka. Att lista alla dessa skulle göra Scene Graph oläsbart inom några sekunder, och de tre objekt du faktiskt bryr dig om skulle drunkna i bruset.
Trädet visar alltså inte allt och gömmer resten genom att gissa. Det visar det du namngav, och räknar resten så att ingenting försvinner tyst. Filtret är ditt, inte motorns.
Vilka objekt som kan namnges#
| Kommando | Vad det namnger |
|---|---|
SpriteName(id, name) | En sprite |
TextName(id, name) | Ett textobjekt |
ObjectName(id, name) | Ett 3D-objekt |
LightName(id, name) | Ett punkt- eller riktningsljus |
ParticlesName(id, name) | En partikelemitter, 2D eller 3D |
Ljud, bilder, memblocks och typsnitt har ingen rad i Scene Graph: de är resurser, inte scenobjekt, och att namnge dem skulle inte visa någonting någonstans.
Gå vidare#
- Resten av dialekten: BASIC-språket.
- Varje namngivningskommando med sina parametrar: Studio-familjen.