All tutorials

Називайте те, що створює ваша програма

Beginner 10 min engine

Програма може створити сотню об'єктів і не показати жодного з них у Scene Graph. Присвоєння імені змушує один об'єкт з'явитися, і це працює зі спрайтами, текстом, 3D-об'єктами, світлом і частинками.

Чого ви навчитеся#

Ви напишете невелику програму на BASIC, побачите, що Scene Graph залишається порожнім, хоча програма явно працює, а потім змусите кожен об'єкт з'явитися, надавши йому ім'я. Наприкінці ви зрозумієте, чому дерево приховує більшість того, що будує програма, і як обирати, що воно показує.

Перш ніж почати#

  • Engine є платним модулем. Inkwell, Vectra та PDF Studio є трьома безкоштовними модулями.
  • Попередній туторіал не потрібен. Усе нижче, один-єдиний скрипт.
  • Тримайте панель Scene Graph відкритою поруч із вікном перегляду. У цьому й полягає суть вправи.

Кроки#

  1. Відкрийте Engine, почніть з порожньої сцени і відкрийте редактор скриптів. Вставте наступний код і натисніть 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. Погляньте на Scene Graph. Спрайт на екрані, світло увімкнене, а дерево показує нічого. Це не помилка, і в цьому весь урок.

    Порада: панель показує кількість неназваних об'єктів. Це число показує результат роботи вашої програми, який дерево навмисно не внесло до списку.

  3. Дайте ім'я спрайту. Додайте один рядок після SpritePosition і знову натисніть Play:

    SpriteName(sprite, "гравець")
    

    гравець з'являється в дереві. На екрані більше нічого не змінилося: присвоєння імені нічого не створює, не переміщує і не малює. Воно лише публікує.

  4. Дайте ім'я і світлу, за допомогою команди, яка йде разом із цією ідеєю:

    LightName(1, "сонце")
    

    Тепер два записи. Натисніть на один: інспектор реагує так само, як реагував би для об'єкта, розміщеного вручну.

  5. Додайте частинки і дайте їм ім'я, щоб побачити, що це правило стосується не лише спрайтів:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "дим")
    
  6. Тепер видаліть три рядки з іменами і натисніть Play. Сцена ідентична, дерево знову порожнє, а лічильник неназваних об'єктів знову показує три.

    Увага: ім'я не є id. SpriteName(sprite, "гравець") позначає спрайт, чий id зберігається у змінній sprite; це не дає змоги знайти його пізніше за цим ім'ям. Сам id залишається вашим ключем доступу до нього.

Результат#

Ви самі вирішуєте, що показує ваша програма. Prop, світло та емітер з'являються під іменами, які ви обрали; сотні технічних об'єктів, які будує реальна програма, залишаються осторонь.

Чому існує це правило#

Класична програма на BASIC постійно створює об'єкти: спрайт на кожен постріл, текст на кожну цифру рахунку, зображення на кожен тайл. Якщо перелічити їх усі, Scene Graph стане нечитабельним за лічені секунди, а три об'єкти, які вас насправді цікавлять, загубляться в цьому шумі.

Тому дерево не показує все і не приховує решту навмання. Воно показує те, чому ви дали ім'я, і рахує все інше, щоб ніщо не зникало непомітно. Цей фільтр належить вам, а не рушію.

Які об'єкти можна називати#

КомандаЩо вона називає
SpriteName(id, name)Спрайт
TextName(id, name)Текстовий об'єкт
ObjectName(id, name)3D-об'єкт
LightName(id, name)Точкове або напрямлене світло
ParticlesName(id, name)Емітер частинок, 2D або 3D

Звуки, зображення, memblocks і шрифти не мають рядка в Scene Graph: вони є ресурсами, а не об'єктами сцени, і присвоєння їм імені ніде нічого не показало б.

Що далі#