如何将导出的方法导出,并在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)
    ---等等
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还很陌生。

原文链接 https://stackoverflow.com/questions/27823398

点赞
stackoverflow用户1442917
stackoverflow用户1442917

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

而且,require "display.lua" 可能应该改成 require "display",而且 game.lua 应该在顶部的某个地方添加 Game = {}。通过这些更改,您的示例对我起作用。

2015-01-07 16:32:46