首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何导出,然后访问Lua中导出的方法

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

Stack Overflow用户
提问于 2015-01-07 15:59:19
回答 1查看 3.8K关注 0票数 4

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

代码语言:javascript
运行
复制
----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中。

代码语言:javascript
运行
复制
---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非常陌生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 16:32:46

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

此外,require "display.lua"可能应该是require "display",而game.lua应该把Game = {}放在顶端。通过这些更改,您的示例对我来说是有效的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27823398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档