local TerrBase = {}
local TerrBase_mt = {_index = TerrBase}
function TerrGrass_mt.baseAdd(a,b) -- <---- ERROR
print(a+b)
end
Вы пытаетесь проиндексировать таблицу с именем TerrGrass_mt
.Но определенная вами таблица называется TerrBase_mt
.
TerrGrass_mt
- это значение nil
, следовательно, ошибка.
Давайте посмотрим на сообщение об ошибке:
main.lua 12: попытка индексировать глобальный TerrGrass_mt (значение nil).
Это говорит о том, что ошибка произошла в строке 12 файла main.lua.
Вы попытались проиндексировать (используйте оператор индекса .
) для глобального объекта с именем TerrGrass_mt.Это говорит о том, что проблема в TerrGrass_mt.
и TerrGrass_mt
в ноль.
Что-то вроде
function a(b) c = b.d end
a()
может привести к ошибке при индексации локального значения nil b
потому что здесь область действия b является локальной.
Всякий раз, когда вы получаете ошибку для использования значений nil любым способом, вы должны выяснить, почему значение равно nil, и либо исправить это, либо в некоторых случаях заменить его значением по умолчанию.