如何导出,然后访问Lua中的导出方法

时间:2015-01-07 15:59:20

标签: oop lua

我有一个文件display.lua,其中我有代码来加载一些资源。

----display.lua
Resources = {}

function Resources:new(rootdir)
  local newObj = {image = {}, audio = {}, root = ""}
  newObj.root = rootdir
  return setmetatable(newObj, self)
end

function Resources:getSpriteSheet(name)
    --- etc etc etc
end  

然后我有一个游戏变量用于存储游戏状态,这是另一个文件game.lua。

---game.lua
require "display.lua"

function Game:new()
  local newObj = {mode = "", map = {}, player = {}, resources = {}}
  self.__index = self
  return setmetatable(newObj, self)
end

function Game:init()
  self.resources = Resources:new("/home/example/etc/game/")
  local spriteSheet = self.resources:getSpriteSheet("spritesheet.png")
end

我可以使用require访问资源代码。我的问题是,在Game:init()我无法访问Resources:getSpriteSheet(),lua解释器抱怨"尝试调用方法(getSpriteSheet)为零值"

我在这里假设我必须在参考资料中导出这些方法,但我不知道我是如何做到这一点的,因为我对Lua很新。

1 个答案:

答案 0 :(得分:2)

我认为你想要return setmetatable(newObj, {__index = self})而不是return setmetatable(newObj, self)

此外,require "display.lua"可能应该是require "display"game.lua应该位于顶部的Game = {}。通过这些更改,您的示例适用于我。