Oop 如何导出,然后访问Lua中导出的方法
我有一个文件display.lua,其中有加载一些资源的代码Oop 如何导出,然后访问Lua中导出的方法,oop,lua,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(nam
----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
然后我有一个用于存储gamestate的游戏变量,它位于另一个文件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()
中,我无法访问资源:getSpriteSheet()
,lua解释器抱怨“试图调用方法(getSpriteSheet)的值为零”
我在这里假设我必须导出参考资料中的方法,但我不知道该怎么做,因为我对Lua很陌生。我想你想要
返回setmetatable(newObj,{uu index=self})
而不是返回setmetatable(newObj,self)
另外,require“display.lua”
可能应该是require“display”
和game.lua
应该在顶部的某个地方有game={}
。有了这些变化,你的例子对我很有用