i'm new to this and trying to create a NEW HERO from the subclass heroClass
code in 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
Code in main.lua
local CharacterClass = require( "CharacterClass" )
local heroClassMain = heroClass:new()
And I am getting this error after i run the code
main.lua:45: attempt to index global 'heroClass' (a nil value) stack traceback: main.lua:45: in main chunk
PS : When I create a NEW CharacterClass in main, it works perfectly, but when I try to create a NEW heroClass (subclass) i receive the error !
Anyone know what's wrong ? Thank you !
Modify your CharacterClass.lua
as follows:
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 }
Now, when you use require in main.lua
, a bit more needs to be done:
local classModule = require "CharacterClass"
local CharacterClass, heroClass = classModule.CharacterClass, classModule.heroClass
local heroClassMian = heroClass:new()
Previously, your heroClass
subclass was not provided to the main.lua
file. This was what caused the error traceback.