← Все вопросы

Почему бесконечный цикл while true без паузы вешает игру в Roblox?

Задан 15 месяцев назад1.3к просмотров1 ответ
6

Написал while true do print("ждём") end и Studio просто завис намертво, пришлось закрывать. Я же не сделал ничего страшного, обычный цикл. Почему так?

1 ответ

10
✓ Принятый ответ — помог автору

Потому что while true без паузы крутится бесконечно быстро и не отдаёт управление движку, который рисует кадры. Игра не может нарисовать ни одного кадра — отсюда полное зависание.

Исправление — добавить паузу:

while true do
    print("ждём")
    task.wait(1)   -- отдаём управление движку на 1 секунду
end

Правило: в любом бесконечном цикле обязана быть пауза task.wait(). Тогда движок успевает между итерациями отрисовать кадр, обработать ввод и т.д.

Это не баг Roblox, так устроен любой однопоточный движок: пока твой цикл не "выдохнул", больше ничего не происходит.

Ваш ответ

Войдите, чтобы ответить на вопрос.