All tutorials

Benennen Sie, was Ihr Programm erzeugt

Beginner 10 Min. engine

Ein Programm kann hundert Objekte erzeugen und keines davon im Scene Graph anzeigen. Erst das Benennen lässt eines erscheinen, und das funktioniert bei Sprites, Text, 3D-Objekten, Lichtern und Partikeln.

Was Sie lernen werden#

Sie schreiben ein kleines BASIC-Programm, beobachten, wie der Scene Graph leer bleibt, obwohl es eindeutig funktioniert, und lassen dann jedes Objekt durch Benennen erscheinen. Am Ende wissen Sie, warum der Baum die meisten Dinge verbirgt, die ein Programm erzeugt, und wie Sie auswählen, was er zeigt.

Bevor Sie beginnen#

  • Engine ist ein finanziertes Modul. Inkwell, Vectra und PDF Studio sind die drei kostenlosen.
  • Kein vorheriges Tutorial nötig. Alles Folgende ist ein einziges Skript.
  • Halten Sie das Panel Scene Graph neben dem Viewport geöffnet. Es ist der Kern der Übung.

Schritte#

  1. Öffnen Sie Engine, starten Sie eine leere Szene und öffnen Sie den Skript-Editor. Fügen Sie Folgendes ein und drücken Sie 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. Schauen Sie sich den Scene Graph an. Das Sprite ist auf dem Bildschirm, das Licht leuchtet, und der Baum zeigt nichts. Das ist kein Fehler, und es ist die ganze Lektion.

    Tipp: Das Panel zeigt eine Anzahl unbenannter Objekte an. Diese Zahl ist die Ausgabe Ihres Programms, die der Baum absichtlich nicht aufgelistet hat.

  3. Benennen Sie das Sprite. Fügen Sie eine Zeile nach SpritePosition hinzu und drücken Sie erneut Play:

    SpriteName(sprite, "player")
    

    player erscheint im Baum. Auf dem Bildschirm hat sich sonst nichts verändert: Benennen erzeugt, bewegt oder zeichnet nichts. Es veröffentlicht.

  4. Benennen Sie auch das Licht, mit dem Befehl, der zu dieser Idee gehört:

    LightName(1, "sun")
    

    Jetzt gibt es zwei Einträge. Klicken Sie auf einen: Der Inspector folgt, genau wie bei einem Objekt, das Sie von Hand platziert hätten.

  5. Fügen Sie Partikel hinzu und benennen Sie sie, damit Sie sehen, dass die Regel nicht nur für Sprites gilt:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "smoke")
    
  6. Entfernen Sie jetzt die drei Benennungs-Zeilen und drücken Sie Play. Die Szene ist identisch, der Baum ist wieder leer, und die Anzahl der unbenannten Objekte steht wieder bei drei.

    Warnung: Ein Name ist keine ID. SpriteName(sprite, "player") bezeichnet das Sprite, dessen ID in sprite steht; es erlaubt Ihnen nicht, es später über diese Bezeichnung wiederzufinden. Die ID bleibt Ihr Handle.

Ergebnis#

Sie können entscheiden, was Ihr Programm zeigt. Ein Prop, ein Licht und ein Emitter erscheinen unter den Namen, die Sie gewählt haben; die Hunderte technischer Objekte, die ein echtes Programm erzeugt, bleiben aus dem Weg.

Warum es diese Regel gibt#

Ein klassisches BASIC-Programm erzeugt ständig Objekte: ein Sprite pro Geschoss, einen Text pro Punktestand-Ziffer, ein Bild pro Kachel. Sie alle aufzulisten würde den Scene Graph innerhalb von Sekunden unlesbar machen, und die drei Objekte, die Sie wirklich interessieren, würden im Rauschen untergehen.

Der Baum zeigt also nicht alles und verbirgt den Rest nicht durch Raten. Er zeigt das, was Sie benannt haben, und zählt den Rest, damit nichts stillschweigend verschwindet. Der Filter gehört Ihnen, nicht der Engine.

Welche Objekte benannt werden können#

BefehlWas er benennt
SpriteName(id, name)Ein Sprite
TextName(id, name)Ein Textobjekt
ObjectName(id, name)Ein 3D-Objekt
LightName(id, name)Ein Punkt- oder Richtungslicht
ParticlesName(id, name)Ein Partikel-Emitter, 2D oder 3D

Sounds, Bilder, Memblocks und Schriftarten haben keine Zeile im Scene Graph: Sie sind Ressourcen, keine Szenenobjekte, und sie zu benennen würde nirgendwo etwas anzeigen.

Wie es weitergeht#