ValueObject — это специальные объекты, предназначенные для хранения различных типов данных внутри Roblox Studio. Они используются для передачи значений между скриптами, отслеживания состояния, настройки параметров и построения игровой логики.
Каждый ValueObject хранит только одно значение, и у каждого типа есть свой формат данных.
1. Назначение ValueObject
ValueObject применяются для:
хранения чисел, текстов, цветов, ссылок на объекты и других значений;
управления состоянием игровых объектов (двери, NPC, триггеры);
синхронизации информации между игроками и сервером;
построения систем квестов, инвентаря, статистики.
ValueObject не отображаются игроку, но доступны скриптам и могут изменяться в реальном времени.
2. Где используются ValueObject
Основные сценарии:
2.1. Игровые состояния
Примеры: дверь открыта/закрыта, квест активен, NPC ищет цель, выбран цвет предмета.
2.2. Статистика игрока
Пример: leaderstats использует IntValue, чтобы хранить монеты, уровень и другие числовые параметры.
2.3. Настройки объектов
Пример: скорость NPC, направление движения, текущий шаг алгоритма.
3. Основные типы ValueObject
В Roblox Studio существует несколько видов ValueObject. Каждый тип хранит определённый формат данных.
3.1. IntValue
Хранит целые числа.
Применение: монеты, очки, уровни, число жизней.
3.2. NumberValue
Хранит числа с плавающей точкой.
Применение: скорость, сила, таймеры, урон.
3.3. BoolValue
Хранит true/false.
Применение: состояние двери, активность события, доступность предмета.
3.4. StringValue
Хранит текст.
Применение: имена квестов, состояния NPC (“Idle”, “Follow”), описание предметов.
3.5. ObjectValue
Хранит ссылку на объект.
Применение: текущая цель NPC, выбранный предмет, объект-владелец.
3.6. Vector3Value
Хранит координаты Vector3.
Применение: точки пути, позиции спавна, направления.
3.7. CFrameValue
Хранит CFrame (позиция + ориентация).
Применение: точки телепортации, ориентация двери, позиция камеры.
3.8. Color3Value
Хранит Color3.
Применение: выбранный цвет элемента, настройки дизайна.
3.9. BrickColorValue
Хранит BrickColor.
Применение: материал цветных объектов.
3.9. BrickColorValue
Хранит луч (Ray) с направлением и длиной.
Используется для: проверок попадания, трассировки выстрелов, определения, во что “упёрся” луч.
4. Пример создания ValueObject
Через Explorer
Правый клик по объекту → Insert Object
Выбрать, например, IntValue
Назначить имя (например, Coins)
Указать начальное значение
Через скрипт
local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Value = 10
coins.Parent = player
5. Использование события .Changed
Все ValueObject имеют событие Changed, позволяющее отслеживать изменение значения.
Пример:
local v = script.Parent.HealthValue
v.Changed:Connect(function(newValue)
print("Значение изменилось:", newValue)
end)
Используется для:
обновления GUI;
запуска анимаций;
проверки условий;
реакции на смену состояния.
6. Когда использовать ValueObject
Выберите ValueObject, если вам нужно:
хранить параметры NPC и дверей;
хранить игровые состояния;
строить системы диалогов и квестов;
сохранять параметры игрока и объекта.
Итоги
ValueObject — это удобный инструмент для хранения данных внутри Roblox Studio. Они обеспечивают передачу значений, отслеживание изменений и построение игровой логики.
С помощью разных видов ValueObject можно создавать:
системы статистики,
интерактивные объекты,
квесты,
настройки NPC,
сохранение состояния игры.
Это один из основных инструментов, которые должен освоить начинающий разработчик.