所以我做了两个模块脚本
下面是代码:
local base = {}
base.__index = base
base.Number = 5
function base:New()
local t = setmetatable({}, self)
t.__index = t
return t
end
return base第二:
local base = script.Parent.Base
local child = require(base):New()
return child这是一个普通的脚本:
local child = require(script.Parent.Child1)
print(child.Number)当我尝试执行它之后,我得到了这个消息。
堆栈开始脚本'ServerScriptService.Script',第1行堆栈结束
它应该执行"5“,但它不起作用,我不知道为什么
发布于 2022-03-26 19:24:22
在基类中,将__index元方法设置为base对象,然后在构造函数中称为setmetatable({}, base),这两行表示当有人在空表上请求属性时,应该在base对象上找到它。但是,它们通过再次设置__index元方法来覆盖该行为。这将移除新对象与其基类之间的关系。
因此,要解决这个问题,只需删除构造函数中的该行。
function base:New()
local t = setmetatable({}, base)
return t
endhttps://stackoverflow.com/questions/71626114
复制相似问题