1. Roblox Studio и основы Lua: переменные, таблицы, функции
Roblox Studio и основы Lua: переменные, таблицы, функции
Зачем это нужно в Roblox
Roblox-игры строятся из объектов (деталей, моделей, интерфейсов) и логики поведения. Логику вы пишете на Luau (диалект Lua, используемый в Roblox). В этой статье вы:Официальная документация:
Быстрый старт в Roblox Studio
Где писать и запускать код
В Roblox Studio чаще всего используют два инструмента:Чтобы увидеть их:
Для экспериментов в начале курса удобнее всего:
print() и ошибки.!Расположение ключевых окон, чтобы легко следовать примерам
Виды скриптов и где они работают
В Roblox логика делится на серверную и клиентскую. Это критично: сервер авторитетный (доверяемый), клиент (игрок) — нет.Таблица ниже — минимальная ориентация, достаточная для старта:
| Тип | Как создать | Где работает | Типичное место |
|---|---|---|---|
| Script | Insert Object → Script | Сервер | ServerScriptService, Workspace |
| LocalScript | Insert Object → LocalScript | Клиент | StarterPlayerScripts, StarterGui |
| ModuleScript | Insert Object → ModuleScript | Там, где его require() | ReplicatedStorage, ServerScriptService |
На первых шагах:
print() и окно Output, чтобы видеть результат.Переменные в Luau
Переменная — это имя, под которым хранится значение. В Luau переменные объявляются черезlocal.local и глобальные переменные
Правило на курс:local;local) в Roblox-проектах легко приводят к конфликтам и трудно отлаживаются.Пример:
Основные типы значений
Luau умеет автоматически понимать тип значения. Вам важно уверенно различать базовые типы:| Тип | Пример | Комментарий |
|---|---|---|
| number | local speed = 16 | Числа (целые и дробные) |
| string | local name = "Alex" | Текст в кавычках |
| boolean | local isAlive = true | true или false |
| nil | local x = nil | «Ничего», часто означает «не задано» |
| function | local f = function() end | Функция как значение |
| table | local t = {} | Таблица (ключи и значения) |
Проверить тип можно через typeof() (часто полезно в Roblox):
Частые ошибки новичков
= и ==:= — присваивание.
- == — сравнение.
nil.Пример сравнения:
Таблицы: главный контейнер данных
В Luau таблица — это универсальная структура данных: список, словарь, объект-конфигурация — всё в одном.Таблица как список (массив)
Список хранит значения по порядку, обычно с числовыми индексами, начиная с 1.Чтобы пройтись циклом:
ipairs() удобно для «плотных» списков без пропусков.#fruits возвращает длину, но корректнее всего работает, когда элементы идут подряд.Таблица как словарь (ключ → значение)
Словарь хранит значения по именованным ключам.Чтобы пройтись по всем парам ключ-значение:
pairs() подходит и для словарей, и для смешанных таблиц.pairs() не гарантирован.Вложенные таблицы
Таблицы можно вкладывать друг в друга — так обычно описывают настройки предметов, уровней, наград.Изменение таблиц
Добавление и удаление:В словаре удаление делают через присваивание nil:
> Таблица в Luau передаётся по ссылке: если вы присвоили одну и ту же таблицу двум переменным, изменения будут видны через обе переменные.
Пример:
Функции: переиспользуемая логика
Функция — это именованный (или безымянный) блок кода, который можно вызывать много раз.Объявление и вызов
Здесь:
playerName — параметр (вход функции);.. — склеивание строк;sayHello("Alex") — вызов.return: возвращаем результат
Несколько возвращаемых значений
В Luau функция может вернуть несколько значений:Функции как значения
Функцию можно положить в переменную или в таблицу.Это полезно для систем команд, обработчиков событий и таблиц настроек.
Мини-практика в Roblox: скрипт, который меняет объект
Сделаем простое действие: изменим цвет детали при запуске сервера.Что здесь важно:
workspace:WaitForChild("ColorPart") ждёт объект, если он ещё не доступен.paintRed — функция, которая принимает объект и меняет его свойство.Color3.fromRGB(r, g, b) создаёт цвет из трёх чисел.Как это связано с игровыми механиками
Игровая механика почти всегда состоит из трёх частей:В следующих материалах курса вы начнёте связывать это с событиями Roblox (кнопки, касания, удалённые события) и строить полноценные взаимодействия между игроком и миром.