Урок Roblox StudioЗанятие 7 / 8

Модули ModuleScript

Переиспользовать общие функции

Модули ModuleScript
Иллюстрация к теме занятия

Цель занятия

Научиться использовать тему «разделяем код по файлам» в небольшом игровом проекте и объяснять каждую строку программы.

Подготовка

Где разместить код: ModuleScript с именем ShopMath в ReplicatedStorage; Script в ServerScriptService

Порядок работы

  1. Открой Roblox Studio и создай отдельную копию учебной игры.
  2. Создай объекты и скрипты точно по схеме подготовки, обращая внимание на названия и тип Script или ModuleScript.
  3. Вставь каждый фрагмент в соответствующий скрипт, сохрани проект и запусти Play.
  4. Открой View → Output и сравни вывод с ожидаемым результатом.
  5. Измени одно значение, запусти ещё раз и объясни, почему результат изменился.

Код Luau

-- ModuleScript ShopMath (ReplicatedStorage)
local ShopMath = {}
function ShopMath.canAfford(stars, price)
    return stars >= price
end
return ShopMath

-- Отдельный Script (ServerScriptService)
local ShopMath = require(game.ReplicatedStorage:WaitForChild("ShopMath"))
print(ShopMath.canAfford(8, 5))
print(ShopMath.canAfford(2, 5))

Проверяем результат

При разнесении частей кода по двум указанным файлам Output показывает true, затем false.

Типичная ошибка

Два фрагмента нельзя вставлять в один Script: ModuleScript должен вернуть таблицу через return.

Усложнение

Добавь функцию calculateRemaining и вызови её из серверного скрипта.

Рефлексия

Объясни преподавателю смысл кода своими словами. Покажи работу примера в Play и окно Output.

Перед публикацией добавь реальные скриншоты Studio и проверь код в редакторе.

Проверь свою работу

Перед тестом убедись, что ты выполнил практику самостоятельно.

Эти отметки — личная памятка, они не влияют на звёзды.

Проверь себя

Ответь на вопросы урока. Успешный тест даёт одну звезду в личном кабинете.

⭐ Проверь свои знания

5 вопросов по теме урока. За 4 правильных ответа получишь звезду. Повторные попытки разрешены.

1. Что должен возвращать ModuleScript с таблицей функций?
2. Как загрузить ModuleScript ShopMath из ReplicatedStorage?
3. Если модуль возвращает {sum=function(a,b) return a+b end}, что выдаст module.sum(2,3)?
4. Где лучше хранить модуль только для серверных секретов?
5. Почему полезно вынести общие расчёты в ModuleScript?