Чого ви навчитеся#
Ви напишете невелику програму на BASIC, побачите, що Scene Graph залишається порожнім, хоча програма явно працює, а потім змусите кожен об'єкт з'явитися, надавши йому ім'я. Наприкінці ви зрозумієте, чому дерево приховує більшість того, що будує програма, і як обирати, що воно показує.
Перш ніж почати#
- Engine є платним модулем. Inkwell, Vectra та PDF Studio є трьома безкоштовними модулями.
- Попередній туторіал не потрібен. Усе нижче, один-єдиний скрипт.
- Тримайте панель Scene Graph відкритою поруч із вікном перегляду. У цьому й полягає суть вправи.
Кроки#
-
Відкрийте 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 -
Погляньте на Scene Graph. Спрайт на екрані, світло увімкнене, а дерево показує нічого. Це не помилка, і в цьому весь урок.
Порада: панель показує кількість неназваних об'єктів. Це число показує результат роботи вашої програми, який дерево навмисно не внесло до списку.
-
Дайте ім'я спрайту. Додайте один рядок після
SpritePositionі знову натисніть Play:SpriteName(sprite, "гравець")гравецьз'являється в дереві. На екрані більше нічого не змінилося: присвоєння імені нічого не створює, не переміщує і не малює. Воно лише публікує. -
Дайте ім'я і світлу, за допомогою команди, яка йде разом із цією ідеєю:
LightName(1, "сонце")Тепер два записи. Натисніть на один: інспектор реагує так само, як реагував би для об'єкта, розміщеного вручну.
-
Додайте частинки і дайте їм ім'я, щоб побачити, що це правило стосується не лише спрайтів:
CreateParticles(1, 200.0, 200.0) ParticlesName(1, "дим") -
Тепер видаліть три рядки з іменами і натисніть 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: вони є ресурсами, а не об'єктами сцени, і присвоєння їм імені ніде нічого не показало б.
Що далі#
- Решта діалекту: мова BASIC.
- Кожна команда присвоєння імені з її параметрами: родина Studio.