← Все вопросы

Что значит nil в Lua и почему вылетает «attempt to index nil» в Roblox?

Задан 10 месяцев назад507 просмотров2 ответа
6

В Output красным: attempt to index nil with 'Position'. Гуглил — пишут что-то про nil. Что это вообще такое и почему мой скрипт падает на этой строке?

2 ответа

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

nil в Lua — это "ничего", "пусто", "такого объекта нет" (как None в Python или null). Ошибка attempt to index nil значит: ты пытаешься обратиться к свойству у того, чего не существует.

Типичный случай:

local part = workspace.MyPart  -- если такой детали нет, part = nil
print(part.Position)           -- БАХ: attempt to index nil with 'Position'

Почему part оказался nil:

  • В Workspace нет объекта с именем MyPart (опечатка в имени, или объект в другом месте дерева).
  • Объект ещё не создался к этому моменту.

Как чинить:

  1. Проверь имя в Explorer — оно регистрозависимо: MyPartmypart.
  2. Подстрахуйся проверкой:
local part = workspace:FindFirstChild("MyPart")
if part then
    print(part.Position)
else
    warn("деталь не найдена!")
end

FindFirstChild вернёт nil вместо краша, и ты сам решишь, что делать.

3

Быстрый способ найти причину: перед падающей строкой поставь print(part). Если в Output напечатается nil — значит проблема не в .Position, а в том, что сам part не нашёлся. Дальше ищи опечатку в имени или неправильный путь в дереве.

Ваш ответ

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