Другие языки программирования и технологии

Программирование в roblox studio (lua)

Умнея есть объект (lamp) и кнопка при нажатии на которую изменяется материал, и он действительно изменяется но если я пишу что если он другого материла то изменится на другой. Код какбуто бы не видет else.
local ffg = workspace.lamp

local function hhg ()
ffg.Material = "Neon"
end

local function hgg ()
ffg.Material = "Marble"
end

if ffg.Material ~= "Neon" then
script.Parent.ClickDetector.MouseClick:Connect(hhg)
else
script.Parent.ClickDetector.MouseClick:Connect(hgg)
end
Ваш код выглядит правильным, но проблема может быть в том, что условие if ffg.Material ~= "Neon" проверяется только один раз, когда скрипт запускается. После этого, если материал объекта ffg изменяется, условие не будет проверяться снова.

Чтобы решить эту проблему, вы можете переместить условие внутрь функции обработчика событий MouseClick. Например:
 local ffg = workspace.lamp  

local function toggleMaterial()
if ffg.Material ~= Enum.Material.Neon then
ffg.Material = Enum.Material.Neon
else
ffg.Material = Enum.Material.Marble
end
end

script.Parent.ClickDetector.MouseClick:Connect(toggleMaterial)
В этом примере, каждый раз, когда пользователь нажимает на кнопку, функция toggleMaterial вызывается и проверяет текущий материал объекта ffg. Если он не равен Neon, то он устанавливается в Neon, иначе он устанавливается в Marble. Таким образом, каждый раз, когда пользователь нажимает на кнопку, материал объекта ffg будет меняться между Neon и Marble.
Сергей Санников
Сергей Санников
25 860
Лучший ответ
Евгений Ивкин чел ты лучший спасибо
Зачем у тебя локал в функциях? +я тебе объясню ща
Заместо script.Parent.ClickDetector.MouseClick:Connect(hhg) пиши hhg() или hgg()
По вопросам в комменты пиши.
MA
Mirlan Anarbaev
12 909
Евгений Ивкин ты имеешь виду впихнуть клик на кнопу в функцию?
Не знаю сработает ли но вот что Нейросеть сказал

Проблема в вашем коде возникает из-за способа, которым вы проверяете текущий материал и привязываете функции к событию MouseClick. Ваш код, на самом деле, всегда будет изменять материал на "Neon" вне зависимости от текущего материала объекта "lamp". Это происходит потому, что ваша проверка if всегда вернет true.

Вместо этого вы можете использовать следующий код, чтобы правильно менять материал в зависимости от текущего состояния:

lua

local ffg = workspace.lamp

local function toggleMaterial()
if ffg.Material == "Neon" then
ffg.Material = "Marble"
else
ffg.Material = "Neon"
end
end

script.Parent.ClickDetector.MouseClick:Connect(toggleMaterial)

Этот код определяет функцию toggleMaterial, которая проверяет текущий материал объекта "lamp". Если материал равен "Neon", функция изменяет его на "Marble", и наоборот. Затем эта функция привязывается к событию MouseClick кнопки, чтобы изменять материал каждый раз при нажатии. Этот код будет корректно переключать материал объекта "lamp" между "Neon" и "Marble".
Евгений Ивкин Выглядит идеально но вот игра думает иначе. Игра какбуто не хочет видеть else и код не работает полностью. Может мне нужен какой-то цикл