All tutorials

Nazwij to, co tworzy twój program

Beginner 10 min engine

Program może zbudować sto obiektów i nie pokazać żadnego z nich w Scene Graph. Nazwanie to czynność, która sprawia, że obiekt się pojawia, i działa to na sprite'ach, tekście, obiektach 3D, światłach i cząsteczkach.

Czego się nauczysz#

Napiszesz mały program w BASIC, zobaczysz, że Scene Graph pozostaje pusty, mimo że program wyraźnie działa, a potem sprawisz, że każdy obiekt się pojawi, nadając mu nazwę. Na koniec będziesz wiedzieć, dlaczego drzewo ukrywa większość tego, co buduje program, i jak wybrać, co ono pokazuje.

Zanim zaczniesz#

  • Engine to moduł finansowany społecznościowo. Inkwell, Vectra i PDF Studio to trzy darmowe moduły.
  • Nie jest potrzebny żaden wcześniejszy tutorial. Wszystko poniżej to jeden skrypt.
  • Trzymaj otwarty panel Scene Graph, obok viewportu. To sedno tego ćwiczenia.

Kroki#

  1. Otwórz Engine, zacznij od pustej sceny i otwórz edytor skryptów. Wklej to i naciśnij 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. Spójrz na Scene Graph. Sprite jest na ekranie, światło się świeci, a drzewo pokazuje nic. To nie błąd, to cała lekcja.

    Wskazówka: panel pokazuje liczbę nienazwanych obiektów. Ta liczba to wynik działania twojego programu, którego drzewo celowo nie wypisało.

  3. Nadaj nazwę sprite'owi. Dodaj jedną linię po SpritePosition i naciśnij Play ponownie:

    SpriteName(sprite, "gracz")
    

    gracz pojawia się w drzewie. Na ekranie nic więcej się nie zmieniło: nadawanie nazwy niczego nie tworzy, nie przesuwa ani nie rysuje. To publikuje.

  4. Nadaj nazwę też światłu, poleceniem, które przyszło razem z tym pomysłem:

    LightName(1, "słońce")
    

    Teraz są dwa wpisy. Kliknij jeden: inspektor podąża za nim, dokładnie tak, jak zrobiłby to dla obiektu umieszczonego ręcznie.

  5. Dodaj cząsteczki i nadaj im nazwę, żeby zobaczyć, że ta zasada nie dotyczy tylko sprite'ów:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "dym")
    
  6. Teraz usuń trzy linie nadające nazwy i naciśnij Play. Scena jest identyczna, drzewo znowu jest puste, a liczba nienazwanych obiektów wraca do trzech.

    Uwaga: nazwa to nie id. SpriteName(sprite, "gracz") nadaje etykietę sprite'owi, którego id znajduje się w zmiennej sprite; to nie pozwala odnaleźć go później po tej etykiecie. Id pozostaje twoim uchwytem.

Efekt#

Możesz decydować, co pokazuje twój program. Prop, światło i emiter pojawiają się pod nazwami, jakie im nadano; setki technicznych obiektów, które tworzy prawdziwy program, pozostają poza drogą.

Dlaczego istnieje ta zasada#

Klasyczny program w BASIC bez przerwy tworzy obiekty: sprite'a na pocisk, tekst na cyfrę wyniku, obraz na kafelek. Wypisanie ich wszystkich sprawiłoby, że Scene Graph stałby się nieczytelny w kilka sekund, a trzy obiekty, na których naprawdę ci zależy, zgubiłyby się w szumie.

Drzewo nie pokazuje więc wszystkiego i nie ukrywa reszty przez zgadywanie. Pokazuje to, co nazwano, i liczy resztę, żeby nic nie znikało po cichu. Ten filtr należy do ciebie, nie do silnika.

Które obiekty można nazwać#

PolecenieCo nazywa
SpriteName(id, name)Sprite
TextName(id, name)Obiekt tekstowy
ObjectName(id, name)Obiekt 3D
LightName(id, name)Światło punktowe lub kierunkowe
ParticlesName(id, name)Emiter cząsteczek, 2D lub 3D

Dźwięki, obrazy, memblocki i czcionki nie mają swojej linii w Scene Graph: to zasoby, a nie obiekty sceny, a nadanie im nazwy niczego nigdzie nie pokaże.

Idź dalej#