ROBLOX - оператор If не запускается внутри цикла while?

Я столкнулся с чем-то действительно странным. Изначально я пытался создать музыкальный сценарий (больше похожий на system, tbh), и у него была та же проблема. Теперь я свел это к простому тесту:

while true do
    if script.Parent.musicstate.Value == true then
        print("Play")
    elseif script.Parent.musicstate.Value == false then
        print("Stop")
    end
    wait()
end

Когда я его запустил, он либо напечатает только «Стоп», либо только напечатает «Воспроизвести». Строка, которую он напечатает, будет зависеть от значения логического значения, когда игра запускается, поскольку в нем не изменяется то, что он печатает, в зависимости от текущего значения. Любая помощь будет оценена по достоинству, спасибо!

Структура, SongScript - это то, что выполняется:
введите описание изображения здесь


person Frostbite    schedule 12.10.2018    source источник
comment
1. вам не нужно elseif, так как Value is bool.   -  person wsha    schedule 12.10.2018
comment
2. где вы обновляете script.Parent.musicstate.Value? Обновляется ли он при обратном вызове действия?   -  person wsha    schedule 12.10.2018
comment
Я обновляю значение прямо с боковой панели во время тестирования (что за обратный вызов?)   -  person Frostbite    schedule 12.10.2018
comment
Он печатает либо Stop, либо Play несколько раз или только один раз?   -  person NetherGranite    schedule 19.10.2018


Ответы (1)


Никогда не создавайте такой бесконечный цикл, который приведет к сбою всей вашей системы! Есть гораздо более эффективный способ. У вас проблема из-за того, что скрипт автоматически сломается, поэтому он не приведет к сбою всей вашей системы.

    script.Parent.musicstate.Changed:Connect(function()
    if script.Parent.musicstate.Value == true then
    print("Play")
elseif script.Parent.musicstate.Value == false then
    print("Stop")
    end
    end)
person Ahmad Said    schedule 13.10.2018
comment
Да, скрипт больше ничего не делает, не отключен и структура не изменилась: / @Ahmad - person Frostbite; 13.10.2018
comment
Я знал твою проблему. Вы редактируете значение от клиента ur. Соло-тестирование с включенной фильтрацией. Поэтому перейдите с текущего клиента на текущий сервер с тестовой вкладки. и это будет работать. Надеюсь, это помогло. @Frostbite - person Ahmad Said; 13.10.2018
comment
У него есть инструкция wait (), она не должна приводить к сбою игры. - person TinFellow; 13.12.2018