All tutorials

Navngiv, hvad dit program skaber

Beginner 10 min engine

Et program kan bygge hundrede objekter og vise ingen af dem i Scene Graph. Navngivning er handlingen, der får ét til at dukke op, og det virker på sprites, tekst, 3D-objekter, lys og partikler.

Hvad du vil lære#

Du vil skrive et lille BASIC-program, se Scene Graph forblive tomt, mens det tydeligvis virker, og derefter få hvert objekt til at dukke op ved at navngive det. Til sidst ved du, hvorfor træet skjuler det meste af det, et program bygger, og hvordan du vælger, hvad det viser.

Før du begynder#

  • Engine er et modul, der kræver støtte. Inkwell, Vectra og PDF Studio er de tre gratis.
  • Intet forudgående tutorial nødvendigt. Alt nedenfor er ét enkelt script.
  • Hold panelet Scene Graph åbent, ved siden af viewporten. Det er hele pointen med øvelsen.

Trin#

  1. Åbn Engine, start en tom scene, og åbn scripteditoren. Indsæt dette, og tryk 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
    
  2. Kig på Scene Graph. Spritet er på skærmen, lyset er tændt, og træet viser ingenting. Det er ikke en fejl, og det er hele lektionen.

    Tip: panelet viser et antal unavngivne objekter. Det tal er dit programs output, som træet bevidst ikke har opført.

  3. Navngiv spritet. Tilføj én linje efter SpritePosition, og tryk Play igen:

    SpriteName(sprite, "spiller")
    

    spiller dukker op i træet. Der er ikke ændret andet på skærmen: navngivning skaber, flytter eller tegner ikke noget. Det offentliggør.

  4. Navngiv også lyset, med den kommando, der hører til denne idé:

    LightName(1, "sol")
    

    Nu er der to poster. Klik på én: inspektoren følger med, nøjagtigt som den ville for et objekt, du havde placeret i hånden.

  5. Tilføj partikler, og navngiv dem, så du kan se, at reglen ikke kun handler om sprites:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "røg")
    
  6. Fjern nu de tre navngivningslinjer, og tryk på Play. Scenen er identisk, træet er tomt igen, og antallet af unavngivne objekter er tilbage på tre.

    Advarsel: et navn er ikke et id. SpriteName(sprite, "spiller") mærker spritet, hvis id står i sprite; det giver dig ikke mulighed for at finde det senere ud fra den mærkat. Id'et forbliver dit håndtag.

Resultat#

Du kan bestemme, hvad dit program viser. En prop, et lys og en emitter dukker op under de navne, du valgte; de hundredvis af tekniske objekter, et rigtigt program bygger, forbliver ude af vejen.

Hvorfor reglen findes#

Et klassisk BASIC-program skaber konstant objekter: et sprite pr. projektil, en tekst pr. pointciffer, et billede pr. tile. At opføre dem alle ville gøre Scene Graph ulæseligt i løbet af sekunder, og de tre objekter, du faktisk går op i, ville drukne i støjen.

Så træet viser ikke alt og skjuler resten ved at gætte. Det viser det, du har navngivet, og tæller resten, så intet forsvinder i stilhed. Filteret er dit, ikke motorens.

Hvilke objekter kan navngives#

KommandoHvad den navngiver
SpriteName(id, name)Et sprite
TextName(id, name)Et tekstobjekt
ObjectName(id, name)Et 3D-objekt
LightName(id, name)Et punkt- eller retningsbestemt lys
ParticlesName(id, name)En partikel-emitter, 2D eller 3D

Lyde, billeder, memblocks og skrifttyper har ingen linje i Scene Graph: de er ressourcer, ikke sceneobjekter, og at navngive dem ville ikke vise noget noget sted.

Kom videre#