2015-04-07 1 views
2

Я новичок в этом и пытаюсь создать новый герой из подкласса heroClassmain.lua: 45: попытка индексировать глобальное значение «heroClass» (значение nil): трассировка стека: main.lua: 45: в основном фрагменте

код в CharacterClass.lua:

local CharacterClass = 
{ 
name = " ", 
hp = " ", 
velocity = " "; 
} 


function CharacterClass:new(o, nameCharacter, hpCharacter, velocityCharacter) 
    local o = o or {} 
    setmetatable(o, self) 
    self.__index = self 
    self.name = nameCharacter 
    self.hp = hpCharacter 
    self.velocity = velocityCharacter 

    return o 
end 

-- CREATING HERO INHERIT 

local heroClass = CharacterClass:new() 
function heroClass:new (o, name, hp, velocity, playerId, color) 
    local o = o or CharacterClass:new(o, name, hp, velocity) 
    setmetatable(o, self) 
    self.__index = self 

    return o 
end 

код в main.lua

local CharacterClass = require("CharacterClass") 

local heroClassMain = heroClass:new() 

И я получаю эту ошибку после того, как я запустить код

main.lua:45: attempt to index global 'heroClass' (a nil value) stack traceback: main.lua:45: in main chunk 

PS: Когда я создаю NEW CharacterClass в основном, он отлично работает, но когда я пытаюсь создать NEW heroClass (подкласс), я получаю ошибку!

Кто-нибудь знает, что случилось? Спасибо !

ответ

1

Измените CharacterClass.lua следующим образом:

local CharacterClass = { 
    name = " ", 
    hp = " ", 
    velocity = " ", 
} 

function CharacterClass:new(o, nameCharacter, hpCharacter, velocityCharacter) 
    -- same as before 
end 

-- CREATING HERO INHERIT 

local heroClass = CharacterClass:new() 

function heroClass:new (o, name, hp, velocity, playerId, color) 
    -- same as before 
end 

return {heroClass = heroClass, CharacterClass = CharacterClass } 

Теперь, когда вы используете требуют в main.lua, немного больше необходимо сделать:

local classModule = require "CharacterClass" 
local CharacterClass, heroClass = classModule.CharacterClass, classModule.heroClass 
local heroClassMian = heroClass:new() 

Ранее ваш heroClass подкласс не был представлен в файл main.lua. Именно это и привело к трассировке ошибок.